0

AngularJS 有一个小问题。请参阅以下内容:

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

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

4

1 回答 1

4

如果没有更多信息,我建议这$timeout(fn)将是最好的方法。它基本上确保在 Angular 完成浏览器渲染处理后有一个中断。大致相当于setTimeout(fn, 0),因此您已经提出了建议,但它可以用于测试。

还有一个$scope.$evalAsync(fn)通常会在当前摘要周期之后但在 DOM 呈现之前呈现。我倾向于更喜欢$evalAsync它,因为它让我更容易推理,并且不会允许其他非角度事件同时发生,但这取决于哪个适合你。

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

于 2013-10-20T20:33:34.603 回答