Domanda

Ho un modulo all'interno del mio controller.Mi piacerebbe essere in grado di impostare una variabile di ambito in base alla validità di questo modulo.Ho già dato un nome al modulo:

<div ng-controller="myCtrl">

    ...

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

    ...

</div>

E ho creato un $watch sulla proprietà $valid di quel modulo (si trova nel controller che contiene questo modulo):

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

La mia dichiarazione di registro appare SOLO al caricamento della pagina, ma non quando cambia la validità del modulo.(Ho verificato che la proprietà $valid del modulo stia cambiando inserendo:

{{ mioForm.$valid }}

nell'ambito del mio modulo)

Mi sono guardato intorno e da quello che ho visto questo Dovrebbe lavorare.(Evidentemente però c'è qualcosa che non va...)

È stato utile?

Soluzione

Penso che il tuo problema sia function(oldVal, newVal) dovrebbe essere function(newVal, oldVal).A parte questo non riesco a trovare alcun difetto nel tuo codice.Ecco un esempio di plunkr funzionante: http://plnkr.co/edit/ur42HFcVQbpTEBkRBtdY?p=preview

A parte questo, probabilmente c'è qualcos'altro nel tuo codice che influenza il modulo, non lo hai nidificato in qualcosa come un ng-if O ng-view?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top