2016-04-25 46 views
0

我有一个触发实时事件的应用程序。而当这些事件之一发生时,我们改变$ rootScope内部模型用下面的代码:ng-show和rootScope的AngularJS问题

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

这工作,当用户已经在标签和使用的应用程序。但是,当用户使用另一个应用程序,或者甚至在另一个选项卡中,此代码将更新模型(我试图添加一些console.logs),但它不会显示div(它不会删除类)。

它的唯一工作方式是如果我点击应用程序的任何地方。我做了一些研究,看到问题出现在setTimeout选项卡没有关注的时候。 但是,正如我之前所说的console.log正在运行并且模型正在更新。所以这是一个奇怪的行为,我无法弄清楚。

+0

尝试使用Angulars $超时。 –

回答

2

您似乎错过了$rootScopt.$apply或者没有使用$timeout而不是setTimeout

解决方案1:

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

解决方案2

如果你可以注入$timeout,则:

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

它工作时的原因标签有焦点可能是其他可能触发$digest循环的其他内容。

+0

谢谢你,这个伎俩! – Brayan