所以我在控制器中实例化了两个指令(时间轴和显示器)。
当时间轴上发生点击时,它$emit是TimelineClicked控制器的事件。
控制器作为Displayer 的事件$on('TimelineClicked', cb)。$broadcastUpdateDisplay
我这里有两种情况:
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))包装起来吗?
我尝试了几种配置都没有成功...