2015-10-16 88 views
3

如何將控制器的值定義爲自定義指令鏈接函數內的元素?如何作爲變量訪問angularJS控制器?

HTML

<div ng-controller="myCtrl as ctrl"> 
    <input type="text" ng-model=ctrl.inputvalue" my-directive/> 
    <button value="submit" ng-disabled="ctrl.disable"/> 
</div> 

JS

app.controller('myCtrl',function(){ 
    var vm = this; 
    vm.inputValue = 'Qwerty'; 
}); 
app.directive('myDirective',function(){ 
    return{ 
     require:'ngModel', 
     link:function(scope,elements,ngModelCtrl){ 
     //How to access ng-diasbled value here 
     }); 
    }  
}); 
+2

javascript在鏈接函數附近似乎不正確。這是問題中的錯字還是您的代碼的外觀?一個')'和';'應該屬於返回語句 – Gustav

+0

是的。它的錯字錯誤。鏈接:函數(範圍,元素,ngModelCtrl){ //如何在這裏訪問ng-diasbled值 }; – User1

回答

1

內部鏈接功能寫爲scope.ctrl.disable訪問禁用值。

1
app.directive('myDirective',function(){ 
     return{ 
      require:'ngModel, ^myCtrl', 
      link:function(scope,elements,ctrls){ 
       var d = ctrls[1].disable 
      }); 
     }  
    }); 
+0

爲什麼ctrls [1] ??? –

+1

當您設置多個所需的控制器時 - 它們將作爲數組傳遞給鏈接功能。這個數組的順序與「require」相同 –

+0

如果我們需要使用ngModelCtrl,那麼$ parsers應該是var ngModelCtrl = ctrls [0];對? – User1

相關問題