所以我在控制器中实例化了两个指令(时间轴和显示器)。
当时间轴上发生点击时,它$emit
是TimelineClicked
控制器的事件。
控制器作为Displayer 的事件$on('TimelineClicked', cb)
。$broadcast
UpdateDisplay
我这里有两种情况:
onUpdateDisplay
可以在一个$digest
周期内调用,例如在加载时,它会更新 UITimelineClicked
但是当它显然来自它时,它没有被$digest
编辑。
因此用这样的包装方法$apply
:
$scope.onUpdateDisplay = function($event, activeObjects) {
$scope.$apply(function() {
//$scope values modification
});
};
$apply already in progress error
将在情况 1 而不是 2 中触发when 。
我不考虑做一些if ($scope.$root.$$phase != '$apply' && $scope.$root.$$phase != '$digest')
太脏的事情恕我直言。
- 两个指令应该如何一起讨论并确保它们的范围始终是最新的?
- $apply 循环是否等待事件回调完成?
- 我应该把
apply
其他地方(周围$on('TimelineClicked', cb)
)包装起来吗?
我尝试了几种配置都没有成功...