$ watch会阻止rootScope更改

时间:2014-10-03 12:46:14

标签: javascript json angularjs watch rootscope

我正在尝试在控制器之间传递一些JSON数据。我使用$http获得了一些JSON,使用$q延迟设置我的回调并将结果分配给我的$rootScope.productList。 一切正常,但当我在$watch上添加$rootScope.productList时,它会返回 undefined 。你对此有什么解决方法吗?

控制器内的$watch

$rootScope.watch('productList', function(newVal, oldVal) {
    $scope.filters = $rootScope.productList;
    console.log($rootScope.productList);
});

在另一个控制器内,我得到了我的数据。我将超时$http替换为重现行为。

$timeout(function() {
    $rootScope.productList = $scope.productList;
    console.log($rootScope.productList);
}, 500);

http://plnkr.co/edit/7wWxXgq5BARYgm0tYVgf

我尝试使用$watch,但我会采取任何解决方法。

2 个答案:

答案 0 :(得分:1)

这里的问题是watch()不是公认的功能 - 你可能想要的是$ watch()。 换句话说,你只是错过了' watch'旁边的$。在原始代码中。

试试这个:

$rootScope.$watch('productList', function(newVal, oldVal) {
  $scope.filters = $rootScope.productList;
  console.log($rootScope.productList);
})

答案 1 :(得分:0)

如果您需要能够在控制器之间传输数据,则应该以角度实现服务。未创建$ rootScope来设置数据。