首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$watch防止rootScope更改

$watch防止rootScope更改
EN

Stack Overflow用户
提问于 2014-10-03 12:46:14
回答 2查看 124关注 0票数 1

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

控制器内的$watch

代码语言:javascript
复制
$rootScope.watch('productList', function(newVal, oldVal) {
    $scope.filters = $rootScope.productList;
    console.log($rootScope.productList);
});

在另一个控制器里,我得到我的数据。我用超时值代替了$http来再现这种行为。

代码语言:javascript
复制
$timeout(function() {
    $rootScope.productList = $scope.productList;
    console.log($rootScope.productList);
}, 500);

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

我试过用$watch,但我愿意采取任何解决办法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-03 14:20:21

这里的问题是watch()不是一个公认的函数,您可能需要的是$watch()。换句话说,您只是遗漏了原始代码中“watch”旁边的$。

试试这个:

代码语言:javascript
复制
$rootScope.$watch('productList', function(newVal, oldVal) {
  $scope.filters = $rootScope.productList;
  console.log($rootScope.productList);
})
票数 1
EN

Stack Overflow用户

发布于 2014-10-03 12:52:52

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26179197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档