2013-05-21 51 views
0

我希望能夠有第二個指令電話編譯提醒,我應該怎麼做這個如何角編譯屬性轉換指令

<div ng-app="website"> 
    <div ng-controller="MyController">  
     <div phonebook="phone"> PhoneBook</div> 
    </div> 
</div> 

http://jsfiddle.net/x3azn/aPWg8/1/

+0

不錯,你爲你的問題提供了一個小提琴。更糟的是代碼在問題中缺失,所以大多數用戶可能會跳過這個問題。確保每個人都通過閱讀來理解你的問題。 – TheHippo

+0

是的,你應該澄清你的問題,用戶不必去小提琴只是爲了知道**實際是什麼**。 –

回答

1

你的問題是,你是使用ng-class作爲聲明類(實例化指令)。這是行不通的,因爲ng-class添加到元素的類在編譯後被添加,並且因此不被$編譯函數識別。

更換

var template = '<div ng-class="{phone2: number}" >Phone</div>'; 

隨着

var template = '<div class="phone2">Phone</div>'; 

會使它的工作。

我不明白你爲什麼把數字與你想實例化的phone2指令相關聯,但我認爲它是兩件事之一:要麼有條件地包含它,要麼將number模型綁定到指令。如果你想創建一個有條件出現的指令,一種方法是使用ng-switch,包括它下面的指令。

如果你想要的是創建一個數據綁定,但是,你會做這樣:

var template = '<div class="phone2" data-number="number">Phone</div>'; 

包括在該指令結合的引用:

.directive('phone2', function($compile){ 
return { 
    restrict: 'AC', 
    scope:{number:"="}, 
    link: function(s,e,a,c){ 

發佈一在這裏修改你的代碼:http://jsfiddle.net/aPWg8/2/

+0

感謝蒂亞戈,你提供了一個解決方案給我的具體案例,但我真正想知道的是,我怎樣才能在期望的時間編譯鏈接執行期間; b/c我實際上已經動態地分配了ng模型值以及其他屬性。所以我真正的問題是如何編譯html元素,以便在用戶定義的執行塊中理解角度指令。 – user2167582

+0

但這就是在這裏解決的問題 - 唯一的區別是,不是創建一個簡單的模板字符串,而是編譯它並將其附加到鏈接函數中,您可以在函數中動態創建模板(取決於傳遞的變量/選項) ,當你想要時,從控制器中調用。 –

+0

這是否允許動態生成的ng模型字符串,如果我有ng-model =「modelName [0]」,ng-class =「directive1,directive2」,則代碼需要編譯2次甚至更多次。 – user2167582