我为什么要制作$ scope。$ apply()?

时间:2013-08-30 09:24:35

标签: javascript angularjs

我有一项服务

$rootScope.$broadcast('myEvent', somedata)

不时。在控制器中我做

$scope.$on('myEvent', function (evt, somedata) { $scope.data = somedata })

问题是我是否省略

if (!$scope.$$phase) { $scope.$apply(); }

在控制器的事件监听器中,然后视图不会改变。这是为什么?有没有更好的方法呢?。

1 个答案:

答案 0 :(得分:0)

这是因为$ apply是一个懒惰的工作者,只有有足够的东西可以刷新才能完成工作。除非您明确调用$ scope。$ apply。

,否则无法控制何时

是的,有更好的方法:调用safeApply。因为显式调用许多$ apply会导致冲突。没有正式的safeApply实现,所以可以选择毒药: