2015-05-29 46 views
2

我正在加载URL,并且如果URL无效,只要页面加载,我想显示一条错误消息。setInterval仅在屏幕上的某些操作中被调用

我在验证URL的函数上设置间隔为1秒。但是,只有在空白屏幕上单击时才会显示消息。

请在URL加载后尽快加载消息。

这里是我的代码:

timer = setInterval(function() { 
    $scope.ValidateUrl(); 
}, 1000); 
+0

使用$间隔服务,因为它看起来像一个消化周期问题 –

+0

你在哪里定义$范围变量? – tning

+0

'$ scope。$ apply(function(){return $ scope.ValidateUrl()});'我想你需要告诉角度来检查范围的变化。因此,如果您在角度js应用程序内部使用本机js方法,角度不会跟踪它所应用的更改,则必须按照上面的建议告诉角度查看。 – Jai

回答

0

貌似消化周期不运行,因为使用的是JavaScript函数setInterval,您应该使用$interval,包装功能$interval将在运行了一个功能之后消化周期。

代码

timer = $interval(function() { 
    $scope.ValidateUrl(); 
}, 1000); 
+0

@Pooja我的回答对你有帮助吗? –

1

我猜你需要告诉角度来检查存在的范围发生变化。因此,如果您在角度js应用程序中使用本地js方法,角度不会跟踪由其应用的更改。

你必须告诉角度通过$apply(fn)跟踪当前范围发生变化:

$scope.$apply(function(){ 
    return $scope.ValidateUrl(); 
}); 
+0

'$ interval'就这样做了,那我们为什么要手动去申请'$ apply'呢? –

+0

@ pankajparkar我想你刚才看到的代码片段不是贴出的行。 – Jai

+0

我的担心是角度确实提供了'$ interval',它的工作方式与'setInterval'相同,也运行digest循环,那么为什么我们正在考虑手动运行'digest'循环? –

相关问题