Вот что происходит:
- Нажимаешь введите
- нг-KeyDown триггерами (дайджест начинается)
- Вы называете
target.blur()
- нг-смазанности спусковые и пытается начать новый цикл дайджеста
- Угловые жалобы
Размытие выполняется синхронно и сразу же запускает обработчик, не заканчивая первый дайджест.
На мой взгляд, это не проблема с вашим кодом, а скорее угловая ошибка. Я пытался придумать лучшего решения, но я могу только найти:
app.controller('BlurCtrl', function($scope, $timeout) {
$scope.blurModel = "I'm the value"
$scope.blurOnEnter = function($event) {
if ($event.keyCode != 13)
return
// this will finish the current digest before triggering the blur
$timeout(function() { $event.target.blur() }, 0, false);
}
$scope.onBlur = function() {
$scope.result = this.blurModel
}
})
Благодарим вас за это. Я видел это только на Safari mobile. – JimTheDev
У меня была эта проблема в Chrome. При нажатии кнопки я хотел вызвать blur() для элемента ввода. Добавление myInput.blur() в тайм-аут исправило мою проблему! –
Спасибо, человек! Работает как шарм. – Siyah