在Angular中强制摘要

时间:2015-02-02 22:37:21

标签: angularjs

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

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

我理解$scope仅在控制器的上下文中有意义。我可以通过$apply()上的$rootScope来实现相同的效果吗?

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

1 个答案:

答案 0 :(得分:8)

请参阅此答案:Running $apply on $rootScope vs any other scope

您可以在控制器外(即在服务中)呼叫$rootScope.$apply()以触发摘要循环。

或者,您可以考虑使用$broadcast$on在需要更新内容时向您应用的其他部分发送通知。 (见Understanding Angular’s $scope and $rootScope event system $emit, $broadcast and $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
});