したがって、コントローラーでインスタンス化された 2 つのディレクティブ (Timeline と Displayer) があります。
タイムラインでクリックが発生すると、$emitコントローラーTimelineClickedにイベントが送信されます。
コントローラー$on('TimelineClicked', cb)は、Displayer へ$broadcastのイベントです。UpdateDisplay
ここには2つの状況があります:
onUpdateDisplay$digestUI を更新するロード時などのサイクル中に呼び出すことができます。- しかし、
TimelineClickedどうやらそれは$digestedではありません。
$applyしたがって、メソッドを次のようにラップします。
$scope.onUpdateDisplay = function($event, activeObjects) {
$scope.$apply(function() {
//$scope values modification
});
};
$apply already in progress errorwhen の状況 1 ではなく it 2 をトリガーします。
if ($scope.$root.$$phase != '$apply' && $scope.$root.$$phase != '$digest')私見が汚すぎるようなことをすることは考えていません。
- 2 つのディレクティブがどのように連携し、スコープが常に最新であることを確認する必要がありますか?
- $apply サイクルは、イベントのコールバックが終了するのを待ちますか?
apply他の場所 (の周り)をラップする必要があり$on('TimelineClicked', cb)ますか?
成功せずにいくつかの構成を試しました...