javascript - $watch 阻止 rootScope 更改

标签 javascript json angularjs watch rootscope

我正在尝试获取一些 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/

相关文章:

javascript - 为什么我在这个基本 Controller 中得到 'Error: $injector:modulerr Module Error'?

javascript - 设置属性但也发送请求的方法的正确名称

javascript - 动态创建 jquery-ui 可拖动句柄

javascript - 覆盖 Backbone.Wreqr.radio 处理程序

json - 将多个 URL 导入 Pocket(或 Instapaper)

AngularJS 过滤器精确匹配

javascript - ng-repeat 中的单选按钮

javascript - 如何在 Javascript 中使用从 URL 返回的 JSON?

php - 保护php页面仅在浏览器中打开

angularjs - ionic 2 : Using Cordova Plugins