2014-10-03 85 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並沒有爲您創建數據。