DOM イベントをトリガーするウォッチがあります。
scope.$watch(function() { return controller.selected; }, function(selected) {
if (selected) {
$input.trigger('focus');
}
});
問題は、「フォーカス」にハンドラーがあり、scope.$apply
.
$input.bind('focus', function() {
scope.$apply(function() { controller.focused = true; });
});
したがって、 my$watch
が a の内部$digest
から起動されると、別の をトリガーしようとするため、エラーが発生します$digest
。
私が持っている回避策は、トリガーを$timeout
.
scope.$watch(function() { return controller.selected; }, function(selected) {
if (selected) {
$timeout(function() { $input.trigger('focus'); });
}
});
これは機能します...これまでのところ。これはこれを処理する適切な方法ですか?これがすべてのケースをキャッチするかどうかはわかりません。ダイジェスト後にコードの一部を延期する角度のある承認された方法があるかどうかを確認したいと思います。
ありがとう!