Question

J'ai un formulaire dans mon contrôleur.J'aimerais pouvoir définir une variable de portée basée sur la validité de ce formulaire.J'ai déjà donné un nom au formulaire :

<div ng-controller="myCtrl">

    ...

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

    ...

</div>

Et j'ai créé une $watch sur la propriété $valid de ce formulaire (elle se trouve dans le contrôleur qui contient ce formulaire) :

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

Ma déclaration de journal apparaît UNIQUEMENT au chargement de la page, mais pas lorsque la validité du formulaire change.(J'ai vérifié que la propriété $valid du formulaire change en insérant :

{{ monFormulaire.$valid }}

dans le cadre de mon formulaire)

J'ai regardé autour de moi et d'après ce que j'ai vu ça devrait travailler.(Il est évident que quelque chose ne va pas...)

Était-ce utile?

La solution

Je pense que ton problème est function(oldVal, newVal) devrait être function(newVal, oldVal).A part ça, je ne trouve aucun défaut dans votre code.Voici un exemple de plunkr fonctionnel : http://plnkr.co/edit/ur42HFcVQbpTEBkRBtdY?p=preview

En dehors de cela, c'est probablement quelque chose d'autre dans votre code qui affecte le formulaire, vous ne l'avez pas imbriqué dans quelque chose comme un ng-if ou ng-view?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top