考虑
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)
答案 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会确保 实例化后,隔离范围绑定的初始值为 可用于此,未来的更改也会自动进行 可用。