$在多个范围内观察变量

时间:2012-11-26 22:18:49

标签: angularjs

我在指令中,我想对本地$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);
            }
        };
    }]);

是否有解决方法可以实现这一目标?

已编辑以提供更多信息。

1 个答案:

答案 0 :(得分:1)

如果您只想在其他更改时触发回调,请为每个更改设置$watch。例如:

scope.$watch('bar', onBarOrFooChange);
scope.$watch('foo', onBarOrFooChange);

或者如果您的指令具有独立的范围,您可以为$watch设置foo,如下所示:

scope.$watch(function() {return $rootScope.foo}, onBarOrFooChange);