簡體   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