Pregunta

Tengo un formulario dentro de mi controlador.Me gustaría poder establecer una variable de alcance basada en la validez de este formulario.Ya he dado el formulario un nombre:

<div ng-controller="myCtrl">

    ...

    <form name='myForm'>
        ...
    </form>

    ...

</div>

y han creado un reloj $ en la propiedad válida de ese formulario (esto se encuentra en el controlador que contiene este formulario):

$scope.$watch('myForm.$valid', function(oldVal, newVal) {
    console.log("Woo! This might be working!");
    if (newVal) {
        $scope.otherVar = true;
    } else {
        $scope.otherVar = false;
    }
}

Mi declaración de registro solo aparece en la carga de la página, pero no cuando cambia la validez del formulario.(He verificado que la propiedad válida de la forma está cambiando insertando:

{{MyForm. $ VALIDO}}

Dentro del alcance de mi forma)

He estado mirando a su alrededor, y por lo que he visto esto debería estar trabajando.(Obviamente, algo está mal, aunque ...)

¿Fue útil?

Solución

Creo que su problema es function(oldVal, newVal) debe ser function(newVal, oldVal). Aparte de eso, no puedo encontrar ninguna falla en su código. Aquí hay un ejemplo de Plunkr de trabajo: http://plnkr.co/edit/ur42hfcvqbptebkrbtdy?p=preview

Fuera de eso, es probable que sea otra cosa en su código que afecte el formulario, no lo tiene anidado en algo así como un ng-if o ng-view?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top