一旦要更改变量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/

10-12 12:18
查看更多