我正在尝试获取一些 JSON 数据以在 Controller 之间传递。我使用 $http
获取一些 JSON,使用 $q
延迟设置回调,并将结果分配给我的 $rootScope.productList
。
一切正常,但是当我在 $rootScope.productList
上添加 $watch
时,它返回未定义。对此您有什么解决办法吗?
Controller 内的我的$watch
:
$rootScope.watch('productList', function(newVal, oldVal) {
$scope.filters = $rootScope.productList;
console.log($rootScope.productList);
});
在另一个 Controller 中,我获取了数据。我用超时替换了 $http
以重现该行为。
$timeout(function() {
$rootScope.productList = $scope.productList;
console.log($rootScope.productList);
}, 500);
http://plnkr.co/edit/7wWxXgq5BARYgm0tYVgf
我尝试过使用 $watch
,但我会采取任何解决方法。
最佳答案
这里的问题是 watch() 不是一个可识别的函数 - 您可能想要的是 $watch()。 换句话说,您只是缺少原始代码中“watch”旁边的 $。
试试这个:
$rootScope.$watch('productList', function(newVal, oldVal) {
$scope.filters = $rootScope.productList;
console.log($rootScope.productList);
})
关于javascript - $watch 阻止 rootScope 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26179197/