在用户操作后的某个时刻,我希望发生摘要,因此 UI 反映了支持它的数据模型的更改。
我有一个服务在回调中执行一些更改(异步)。
我明白那个$scope
仅在控制器的上下文中才有意义。我可以通过执行来达到相同的效果吗$apply()
on the $rootScope
?
我见过检查的代码$$phase
或与避免摘要错误相关的类似内容,我应该执行哪些检查才能安全地触发摘要?
看这个答案:在 $rootScope 上运行 $apply 与任何其他范围 https://stackoverflow.com/questions/17868889/running-apply-on-rootscope-vs-any-other-scope
您可以致电$rootScope.$apply()
在控制器外部(即在服务中)以触发摘要循环。
或者,您可以考虑使用$broadcast
and $on
当某些内容需要刷新时向应用程序的其他部分发送通知。 (看了解 Angular 的 $scope 和 $rootScope 事件系统 $emit、$broadcast 和 $on http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/)
// 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
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)