Ecco cosa sta succedendo:
- si preme Invio
- trigger NG-keydown (digerire inizia)
- Si chiama
target.blur()
- trigger ng-blur e tenta di avviare un altro ciclo di digest
- reclami angolari
La sfocatura viene eseguita in modo sincrono e attiva immediatamente il gestore senza terminare il primo riassunto.
A mio parere, questo non è un problema con il codice, ma piuttosto un bug angolare. Ho cercato di pensare a una soluzione migliore, ma posso trovare soltanto:
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
}
})
fonte
2013-08-22 20:17:15
Grazie per questo. Stavo solo vedendo questo su Safari mobile. – JimTheDev
Ho avuto questo problema in Chrome. Facendo clic su un pulsante, volevo chiamare blur() su un elemento di input. L'aggiunta di myInput.blur() all'interno di un timeout ha corretto il mio problema! –
Grazie amico! Funziona come un fascino. – Siyah