Ao enviar um formulário em AngularJS e usar a funcionalidade de lembrar senha do navegador e, em uma tentativa de login subsequente, você permitir que o navegador preencha o formulário de login com o nome de usuário e a senha, o $scope
modelo não será alterado com base no preenchimento automático.
O único hack sujo que encontrei é usar a seguinte diretiva:
app.directive("xsInputSync", ["$timeout" , function($timeout) {
return {
restrict : "A",
require: "?ngModel",
link : function(scope, element, attrs, ngModel) {
$timeout(function() {
if (ngModel.$viewValue && ngModel.$viewValue !== element.val()) {
scope.apply(function() {
ngModel.$setViewValue(element.val());
});
}
console.log(scope);
console.log(ngModel.$name);
console.log(scope[ngModel.$name]);
}, 3000);
}
};
}]);
O problema é que o ngModel.$setViewValue(element.val());
não altera o modelo nem a visualização com base no element.val()
valor retornado. Como posso fazer isso?