【问题标题】:$watch prevents rootScope change$watch 防止 rootScope 更改
【发布时间】:2014-10-03 22:44:02
【问题描述】:

我正在尝试让一些 JSON 数据在控制器之间传递。我用$http 得到一些JSON,用$q defer 设置我的回调并将结果分配给我的$rootScope.productList。 一切正常,但是当我在$rootScope.productList 上添加$watch 时,它返回给我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,但我会采取任何解决方法。

【问题讨论】:

    标签: javascript json angularjs watch rootscope


    【解决方案1】:

    这里的问题是 watch() 不是一个公认的函数——你可能想要的是 $watch()。 换句话说,您只是在原始代码中缺少“watch”旁边的 $。

    试试这个:

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

    【讨论】:

      【解决方案2】:

      如果您需要能够在控制器之间传输数据,您应该在 Angular 中实现服务。 $rootScope 不是为您设置数据而创建的。

      【讨论】:

        猜你喜欢
        • 2015-01-31
        • 2015-07-30
        • 1970-01-01
        • 1970-01-01
        • 2014-09-27
        • 1970-01-01
        • 2018-01-06
        • 1970-01-01
        • 2020-06-15
        相关资源
        最近更新 更多