簡體   English   中英

$ watch防止rootScope更改

[英]$watch prevents rootScope change

我正在嘗試獲取一些在控制器之間傳遞的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 ,但我會采取任何解決方法。

這里的問題是watch()不是公認的函數-您可能想要的是$ watch()。 換句話說,您只是在原始代碼中缺少“ watch”旁邊的$。

嘗試這個:

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

如果需要能夠在控制器之間傳輸數據,則應該以角度實現服務。 並非為您創建$ rootScope來設置數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM