2015-10-16 120 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

相关问题