我在另一个自定义指令中有一个自定义指令,我希望子指令在父指令更改范围值时更改。
父指令的html有一个名为childHeight的范围变量,我有一个设置它的函数。
<button ng-on-click="setHeight(500)"> change the height </button>
<child-directive ctrl-height="childHeight"></child-directive>
child指令在ctrlHeight上有一个监视
scope: {
ctrlHeight: '=?',
ctrlWidth: '=?'
},
link: function (scope, element, attrs) {
scope.$watchCollection(['ctrlHeight', 'ctrlWidth'], function() {
scope.reSize(scope.ctrlWidth, scope.ctrlHeight);
});
}
当我在setHeight
中更改范围变量时$scope.childHeight = 500;
怎么没有触发手表。
我尝试添加$ apply()或$ digest,这两个都给我一个错误
答案 0 :(得分:0)
如果您需要同时观看ctrlHeight
和ctrlWidth
,您可以尝试这样的事情:
scope.$watch('ctrlHeight + ctrlWidth', watcher);
这样,每次每次更改时,都会触发watcher
fn。另外$apply()
也无效,因为您已经处于Angular环境中。