我现在正在创建一个嵌套控制器,父控制器传入一个变量,如下所示:
app.directive('entity', function() {
return {
restrict: 'E',
controller: 'EntityShowController',
templateUrl: '/show.html',
controllerAs: 'showCtrl',
scope: {
entity: '=' // two way binding parent/child
}
};
})
在模板中我有:
<entity entity="parent.getSelected()"></entity>
现在在子控制器中,我可以这样做:
app.controller('EntityShowController', function($scope) {
// this is what I should do to access the passed in two-way sync entity
console.log($scope.entity);
// this is what I like to achieve
this.entity = $scope.entity;
$scope.entity=null;
}]);
是否可以设置控制器本地数据(this
属性)来跟踪父控制器数据($scope
属性)?
我知道我可以将setEntity
方法与ng-click
结合起来(例如),但这并不是我想要实现的目标。
答案 0 :(得分:1)
如果你使用的是1.3.x版本的angular,你可以在指令设置上设置bindToController
标志来说明将双向绑定范围属性绑定到控制器实例,如果你低于1.3.x这个选项不可用,您需要直接在作用域上工作,或者您需要建立同步机制以在控制器实例和作用域属性之间进行同步。
.directive('entity', function() {
return {
restrict: 'E',
controller: 'EntityShowController',
templateUrl: '/show.html',
controllerAs: 'showCtrl',
bindToController:true,
scope: {
entity: '=' // two way binding parent/child
}
};
})