gpt4 book ai didi

javascript - $rootScope.$watch 触发了两次

转载 作者:行者123 更新时间:2023-11-30 12:23:11 25 4
gpt4 key购买 nike

我想在变量 newChat 像这样更改后触发新聊天:

$rootScope.newChat = {
roomId: roomId,
friendId: friendId
};

在我的 ChatController 中,我 $watch 变量如下:

$rootScope.$watch('newChat', function (data) { /*do stuff*/ }

第一次重新加载页面后,这在我的页面上有效,没有任何问题。但是对于第一次加载,此 $watch 会被触发两次,这会导致聊天的其他部分出现问题。

我检查了 newChat 的值。两次的值完全相同。我的应用程序的其他部分没有使用 $rootScope.newChat 变量

为什么会这样,我该如何解决?

最佳答案

当 $digest 循环运行时,每个 watch 都会被触发。您需要做的是检查新值与旧值。

$rootScope.$watch('newChat', function (newValue, oldValue) {
if(newValue !== oldValue){
/*do stuff*/
}
});

关于javascript - $rootScope.$watch 触发了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30356554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com