[英]$rootScope.$watch triggered twice
一旦變量newChat
被改變,我想觸發一個新的聊天,如下所示:
$rootScope.newChat = {
roomId: roomId,
friendId: friendId
};
在我的ChatController
我$watch
這個變量:
$rootScope.$watch('newChat', function (data) { /*do stuff*/ }
在第一次重新加載頁面后,這可以在我的頁面上運行,沒有任何問題。 但是對於第一次加載,這個$watch
會被觸發兩次,這會導致聊天的其他部分出現問題。
我檢查了newChat
的值。 這兩次的價值完全相同。 我的應用程序的其他任何部分都沒有使用$rootScope.newChat
變量
為什么這樣,我該如何解決這個問題?
$ digest循環運行時,每個手表都會被觸發。 您需要做的是檢查新值與舊值。
$rootScope.$watch('newChat', function (newValue, oldValue) {
if(newValue !== oldValue){
/*do stuff*/
}
});
我這樣解決了這個問題
$rootScope.$watch('someValue', function (){
/* rewrite into a new scope */
$scope.someValue = $rootScope.someValue;
});
$scope.$watch('someValue', function (){/*To do*/});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.