2013-10-20 28 views
0

与AngularJS有一个小问题。参见以下内容:Angularjs - 摘要循环/重绘计时

$http({method: 'GET', url: 'some/url/withJSON.json'}) 
     .success(function(data) 
       { 
       $scope.data = data 
       $animations._load('arg1') 
       }) 

$ animations是一个注册服务,它执行某些操作。在窗口被绘制/摘要循环完成之前,_load()方法将运行的时间偶尔(可能是20%),这意味着可视化尚未完成。通过使用10ms的setTimeout()来包装_load(),这已经解决了它,但是在AngularJS中有一个隐式/显式方法来在摘要循环完成后执行回调?

回答

4

没有更多信息,我建议$timeout(fn)将是最好的方式来做到这一点。基本上可以确保浏览器在角度完成处理后进行渲染。大致相当于setTimeout(fn, 0),这是你已经建议的,但它是可测试的。

还有$scope.$evalAsync(fn),通常会在当前摘要循环之后但DOM呈现之前呈现。我倾向于更喜欢$evalAsync,因为它让我更容易推理,并且不会让其他非角色事件在此期间发生,但它取决于您的作用。

这个answer有关于这两种方法的更详细的信息。

+0

感谢这一点,事实证明这是一个相当普遍的凹凸需要考虑。由于提供了链接和替代建议,标记为正确。 –