2013-10-26 60 views
3

我想訪問ngModel控制器(稍後使用setValidity來驗證自定義輸入字段)。但是,當我想使用指令作爲屬性(而不是類)時,replaceWith函數會拋出一個錯誤,它無法找到ngModel控制器。我在這裏創造一個小提琴:angular在編譯指令時使用自定義模板訪問ngModel控制器

jsfiddle.net/6HcGS/396

任何人可以幫助我嗎?

這關係到我的第一個問題:

databinding custom directive angular with replacing html in compile function

回答

2
<input zippy ng-model="title"> 

比比和ngModel都是指令被呈現在一個特定的順序。在這種情況下,zippy會在ngModel之前呈現。您可以重新排列像馬克西姆Shoustin的指令建議,或者你可以通過指令創建函數提供priority屬性,像這樣指定渲染次序:

.directive('zippy', function($compile){ 
    return { 
     restrict: 'A', 
     priority: -1, 
     replace: true, 
     ... 

默認preority是0指令具有更高的優先級首先呈現。

+0

是的,我想設置優先級,它應該工作。在我的項目中,我嘗試在第一位編寫自定義指令。反正+1 :) –

+0

thnx一堆!我永遠不會考慮優先執行指令來完成這項工作! –

1

相反

<input zippy ng-model="title"/> 

嘗試寫屬性後ng-model,如:

<input ng-model="title" zippy/> 

你有意思之前加載zippyng-model指令。

像bekite說,設置priority: -1

演示Fiddle

+0

謝謝!很好的回答我的問題! –

相關問題