【发布时间】:2013-04-17 17:20:18
【问题描述】:
我有一个触发 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; });
});
所以当我的$watch 从$digest 内部被触发时,它会导致错误,因为它试图触发另一个$digest。
我的解决方法是将触发器放在$timeout 中。
scope.$watch(function() { return controller.selected; }, function(selected) {
if (selected) {
$timeout(function() { $input.trigger('focus'); });
}
});
这工作......到目前为止。这是处理这个问题的正确方法吗?我不确定这是否适用于所有情况,并且想看看是否有一种角度认可的方法可以在摘要之后延迟一段代码。
谢谢!
【问题讨论】:
-
$input.trigger('focus') -> 是否试图将焦点设置在输入元素上?
-
是的......看起来我可以改为
$input.focus()。
标签: angularjs angularjs-directive