我试图在控制器之间传递一些JSON数据。我用$http获得一些JSON,用$q延迟设置回调,并将结果分配给我的$rootScope.productList。一切都正常,但是当我在$rootScope.productList上添加一个$rootScope.productList时,它会返回未定义的。你对此有什么解决办法吗?
控制器内的$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,但我愿意采取任何解决办法。
发布于 2014-10-03 14:20:21
这里的问题是watch()不是一个公认的函数,您可能需要的是$watch()。换句话说,您只是遗漏了原始代码中“watch”旁边的$。
试试这个:
$rootScope.$watch('productList', function(newVal, oldVal) {
$scope.filters = $rootScope.productList;
console.log($rootScope.productList);
})发布于 2014-10-03 12:52:52
如果您需要能够在控制器之间传输数据,那么您应该在transfer中实现一个服务。$rootScope不是为您设置数据创建的。
https://stackoverflow.com/questions/26179197
复制相似问题