2014-10-03 93 views
1

我试图让一些JSON数据在控制器之间传递。我使用$http获得一些JSON,将我的回调设置为$q推迟并将结果分配给我的$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,但我会采取任何解决方法。

回答

1

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

试试这个:

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

谢谢,我想我可以上吊缺少这一个... – Holmeron 2014-10-03 14:55:48

0

如果您需要能够在控制器之间传输数据,则应该以角度实施服务。 $ rootScope并没有为您创建数据。