一旦要更改变量newChat
,我想触发一个新的Chat:
$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*/
}
});
关于javascript - $ rootScope。$ watch触发两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30356554/