监视自定义指令属性,不改变父父范围的变化

时间:2015-02-26 22:47:41

标签: javascript angularjs

我在另一个自定义指令中有一个自定义指令,我希望子指令在父指令更改范围值时更改。

父指令的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,这两个都给我一个错误

1 个答案:

答案 0 :(得分:0)

如果您需要同时观看ctrlHeightctrlWidth,您可以尝试这样的事情:
scope.$watch('ctrlHeight + ctrlWidth', watcher);
这样,每次每次更改时,都会触发watcher fn。另外$apply()也无效,因为您已经处于Angular环境中。