我在指令中,我想对本地$watch
上存在的变量和$scope
上存在的变量进行联合$rootScope
。它看起来像是:
myapp.directive('cohnbread',
['TEMPLATE_URL', '$rootScope',
function(TEMPLATE_URL, $rootScope) {
return {
templateUrl: TEMPLATE_URL + "cohnbread.html",
scope: { odp: '@' },
link: function(scope, elem, attrs) {
// here I would like to register a callback to fire
// whenever scope.bar or $rootScope.foo fires. Something like:
$watchBoth('scope.bar', '$rootScope.foo', onBarOrFooChange);
}
};
}]);
是否有解决方法可以实现这一目标?
已编辑以提供更多信息。
答案 0 :(得分:1)
如果您只想在其他或更改时触发回调,请为每个更改设置$watch
。例如:
scope.$watch('bar', onBarOrFooChange);
scope.$watch('foo', onBarOrFooChange);
或者如果您的指令具有独立的范围,您可以为$watch
设置foo
,如下所示:
scope.$watch(function() {return $rootScope.foo}, onBarOrFooChange);