我有一项服务
$rootScope.$broadcast('myEvent', somedata)
不时。在控制器中我做
$scope.$on('myEvent', function (evt, somedata) { $scope.data = somedata })
问题是我是否省略
if (!$scope.$$phase) { $scope.$apply(); }
在控制器的事件监听器中,然后视图不会改变。这是为什么?有没有更好的方法呢?。
答案 0 :(得分:0)
这是因为$ apply是一个懒惰的工作者,只有有足够的东西可以刷新才能完成工作。除非您明确调用$ scope。$ apply。
,否则无法控制何时是的,有更好的方法:调用safeApply。因为显式调用许多$ apply会导致冲突。没有正式的safeApply实现,所以可以选择毒药: