gpt4 book ai didi

javascript - AngularJS 的 ng-show 和 rootScope 问题

转载 作者:行者123 更新时间:2023-11-28 18:37:22 25 4
gpt4 key购买 nike

我有一个可以触发实时事件的应用程序。当其中一个事件发生时,我们使用以下代码更改 $rootScope 内的模型:

setTimeout(function(){$rootScope.controlsVisible = true}, 1500);

当用户已在选项卡中并使用应用程序时,此功能有效。但是,当用户使用另一个应用程序甚至在另一个选项卡中时,此代码将更新模型(我尝试添加一些 console.logs),但它不会显示 div(它不会删除 ng-隐藏类)。

它起作用的唯一方法是我单击应用程序的任意位置。我做了一些研究,发现问题出在选项卡未聚焦时的 setTimeout 上。然而,正如我之前所说,console.log 正在运行并且模型正在更新。所以这是一种奇怪的行为,我无法弄清楚。

最佳答案

您似乎缺少 $rootScopt.$apply 或未使用 $timeout 而不是 setTimeout

解决方案 1:

setTimeout(function(){  
$rootScope.$apply(function () {
$rootScope.controlsVisible = true;
}
}, 1500);

解决方案 2:

如果你可以注入(inject)$timeout,那么:

$timeout(function() { $rootScope.controlsVisible = true; }, 1500);
<小时/>

当选项卡具有焦点时它起作用的原因可能是其他可能触发 $digest 循环的原因。

关于javascript - AngularJS 的 ng-show 和 rootScope 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36849121/

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