我有一个触发 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
从内部被触发时,$digest
它会导致错误,因为它试图触发另一个$digest
.
我的解决方法是将触发器放在$timeout
.
scope.$watch(function() { return controller.selected; }, function(selected) {
if (selected) {
$timeout(function() { $input.trigger('focus'); });
}
});
这有效......到目前为止。这是处理这个问题的正确方法吗?我不确定这是否适用于所有情况,并且想看看是否有一种角度认可的方法可以在摘要之后延迟一段代码。
谢谢!