我有一個觸發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') - >是試圖將焦點設置爲輸入元素嗎? – ganaraj
是的......看起來我可以用$ input.focus()代替。 「 – anonymous