在Angular中强制摘要

Ben*_*Ben 4 angularjs

在用户操作之后的某个时刻,我想使摘要发生,因此UI反映了支持它的数据模型的变化.

我有一个服务,在回调中执行一些更改(异步).

我理解$scope只有在控制器的上下文中才有意义.我可以通过表演$apply()来达到同样的效果$rootScope吗?

我看过检查$$phase或类似的代码与避免摘要错误相关,我应该执行哪些检查才能安全地触发摘要?

Nat*_*ini 8

看到这个答案:在$ rootScope上运行$ apply与任何其他范围

您可以$rootScope.$apply()在控制器外部(即在服务中)调用以触​​发摘要循环.

或者,您可以考虑使用$broadcast$on在需要刷新时向应用的其他部分发送通知.(请参阅了解Angular的$ scope和$ rootScope事件系统$ emit,$ broadcast和$ on)

// in a service
$rootScope.$broadcast('myCustomEvent', {
  someProp: 'foobar'
  // other data
});

// in a controller or another service
$scope.$on('myCustomEvent', function (event, data) {
  console.log(data);
  // do something with this event
});
Run Code Online (Sandbox Code Playgroud)