Domanda

Alcuni amici e io stiamo lavorando su un progetto. Questo è il secondo progetto in cui sto lavorando con AngularJS, stavano attualmente utilizzando la versione 1.2.3.

Nonostante ciò a volte trovo parte del suo comportamento dispari e non capisco perché qualcosa stia accadendo.

Quindi la situazione è questa ... ho nel mio file cshtml il followam:

<div class="checkbox">
    <label>
         <input name="somecheckbox" type="checkbox" ng-click="click()" ng-model="displayRegardlessOfSomething" />
         <label>Display regardless of something</label>
    </label>
</div>

<h1>{{displayRegardlessOfSomething}}</h1>
.

Nel mio file JavaScript ho il seguente codice all'interno di una direttiva:

All'inizio:

$scope.displayRegardlessOfSomething = true;
.

E ho quanto segue:

$scope.click = function () {
    console.log($scope.displayRegardlessOfSomething)
}
.

E ogni volta che controllo o deselezionando la casella di controllo, ottengo sempre true ... Tuttavia, la parte particolare è che il contenuto all'interno del <h1></h1> modifica i tag .... Quindi, è come se sto cambiando il valore di una variabile sullo strato HTML, ma non sullo strato JavaScript ...

Perché sta succedendo?

Ho risolto il problema usando $ genitor.displayregardlessofsomething ma non capisco perché risolto il problema ... Cosa ha causato il problema in primo luogo?

È stato utile?

Soluzione

Ho provato quello che hai fatto nel violino e funziona bene per me.

http://jsfiddle.net/nicolasmoise/x9kyu/1/ Il fatto che funzioni per te quando hai usato $parent mi fa pensare che un controller genitore sia in errore qui.Forse hai due variabili con gli stessi nomi?

P.S.: Ricorda che in JavaScript, i primitivi sono passati per valore e gli oggetti sono passati per riferimento.Questa è la causa di molti errori per gli sviluppatori angolari.Guarda questo violino dove illuso il mio punto.

Con primitivi: http://jsfiddle.net/nicolasmoise/x9kyu/

con oggetti: http://jsfiddle.net/nicolasmoise/x9kyu/2/

Altri suggerimenti

A meno che tu non sia abbastanza sicuro che tutto vive nella stessa portata, che non è quasi mai, dovresti ha sempre un punto da qualche parte nella tua espressione del modello NG .

myApp.controller('MyController2', function($scope) {

  $scope.model = { displayRegardlessOfSomething: true };

  $scope.click = function() {
    console.log($scope.model.displayRegardlessOfSomething);
  };
});

<input type="checkbox" 
       ng-click="click()" 
       ng-model="model.displayRegardlessOfSomething" />
.

Vedi Questo pinkeer per i dettagli per la demo live.

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