2

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

是否有解决方法来实现这一点?

编辑以提供更多信息。

4

1 回答 1

1

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

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

或者如果你的指令有一个独立的范围,你可以像这样设置$watchfor foo

scope.$watch(function() {return $rootScope.foo}, onBarOrFooChange);
于 2012-11-27T15:36:52.983 回答