繁体   English   中英

ng-show和rootScope的AngularJS问题

[英]AngularJS issue with ng-show and rootScope

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

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

当用户已经在选项卡中并正在使用该应用程序时,此方法将起作用。 但是,当用户使用另一个应用程序或什至在另一个选项卡中时,此代码将更新模型(我尝试添加一些console.logs),但不会显示div(不会删除ng-hide类) 。

它起作用的唯一方法是单击应用程序的任何位置。 我进行了一些研究,发现当标签不突出时,问题就在setTimeout上。 但是,正如我之前所说的,console.log正在运行,并且模型正在更新。 所以这是一个奇怪的行为,我无法弄清楚。

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

解决方案1:

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

解决方案2

如果可以注入$timeout ,则:

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

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

尝试使用Angulars $ timeout而不是setTimeout。 否则,您将需要$ apply()。

https://coderwall.com/p/udpmtq/angularjs-use-timeout-not-settimeout

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM