Solución de autocompletar del navegador AngularJS mediante el uso de una directiva

Al enviar un formulario en AngularJS y usar la funcionalidad de recordar contraseña del navegador, y en un intento posterior de inicio de sesión, permite que el navegador complete el formulario de inicio de sesión con el nombre de usuario y la contraseña,$scope El modelo no se cambiará en función del autocompletado.

El único truco sucio que encontré es usar la siguiente directiva:

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);
        }
    };
}]);

El problema es que langModel.$setViewValue(element.val()); No cambia el modelo ni la vista basada en elelement.val() valor devuelto. ¿Cómo puedo lograr eso?

Respuestas a la pregunta(23)

Su respuesta a la pregunta