角度范围和绑定数据到指令

时间:2015-08-10 11:22:57

标签: angularjs

考虑

angular.module('App').directive('errors',function() {
return {
restrict: 'A',
controller:function() {
   var self = this;
   self.closeErrors = function() {
      self.errors = [];
      self.hasErrors = false;
   }
},
controllerAs: 'errorsCtrl',
templateUrl: 'errors.html'
}

调用

<div errors="otherCtrl.errors"></div>

对象错误来自另一个控制器。 我知道我可以添加

scope: {errors:"="},

然后通过

在我的控制器中访问它
$scope.errors;

但是当我将其分配给

self.errors = $scope.errors.

self.errors在父级中更改后永远不会更新。

所以我的问题是,如果我的父控制器更改错误对象,我怎么能让它工作呢?它也会在errorsCtrl中更改。

(另外我知道我可以在没有控制器的模板中直接访问错误,但我只是想使用我的errorsCtrl)

1 个答案:

答案 0 :(得分:2)

bindToController: true添加到您的指令中。

http://blog.thoughtram.io/angularjs/2015/01/02/exploring-angular-1.3-bindToController.html

  

Angular 1.3为指令定义引入了一个新属性   对象名为bindToController,它完全按照它所说的去做。什么时候   在具有使用controllerAs的隔离范围的指令中设置为true,   组件的属性绑定到控制器而不是   范围。

     

这意味着,当控制器出现时,Angular会确保   实例化后,隔离范围绑定的初始值为   可用于此,未来的更改也会自动进行   可用。