2015-05-19 107 views
0

的等待分配/評估可以說我有以下標籤:角指令控制器 - 屬性

<input name="username" type="text" ng-model="vm.username" available="{{vm.blarg}}"> 

可以說blarg設置爲「富」(從頁的控制器 - 不從低於指令)。

,我有以下指令:

angular.module('app') 
    .directive('available', RegistrationCtrl); 

    function RegistrationCtrl() { 
    var directive = { 
     restrict: 'A', 
     require: 'ngModel', 
     scope: { 
     ngModel: '=ngModel' 
     }, 
     link: function(scope, element, attrs, ngModel) { 
     console.log("link: " + attrs.available); //output: "foo" 
     }, 
     controller: ExampleController, 
     controllerAs: 'vm', 
     bindToController: true 
    }; 

    return directive; 
    } 

    function ExampleController($attrs) { 
    console.log("controller:" + $attrs.available); //output: "{{vm.blarg}}" 
    } 

我的問題:有沒有什麼辦法讓(指令)的控制器等到所有的屬性是由角分析(評價)的那一刻:

{{vm.blarg}} -> "foo" 

換句話說,我希望指令只在第一個摘要週期結束後運行。

+0

而不是使用available =「{{vm.blarg}}」use available =「vm.blarg」,然後在可用指令中的vm.blarg上添加angular watch,然後在那裏執行ur logic。 –

+0

你是什麼意思,「指令只在第一個摘要循環後運行」?指令在每次修改範圍時編譯。 –

+0

@manasisakhare,似乎控制器在vm.blarg未被評估之前運行。但經過一段時間後(我認爲在摘要週期結束後 - 表達式vm.barg由指令的父控制器進行評估並解析爲「foo」 – vlio20

回答

0

根據角文檔,最好的做法是:

使用控制器,當你想一個API暴露給其他指令。 否則使用鏈接。

在您的指令中,如果沒有API公開,那麼請不要使用控制器。你所有的邏輯都進入鏈接功能,你可以看你的範圍屬性的變化。