AngularJS: Wählen Sie keine 2-Wege-Bindung zum Modell
Bin ich mit einer select -, um zu zeigen, Client-Namen. Ein Benutzer sollte in der Lage sein, um wählen Sie einen bestehenden client aktualisieren dann die Eigenschaft scope (Bereich):
Controller
Initialisierung der "first pick".
if($scope.clients.length > 0) $scope.existingClient = $scope.clients[0];
Ansicht
<select
id='nm-existing-client-name'
class='form-control input-lg'
ng-model='existingClient'
ng-options="client.name for client in clients">
</select>
Die Eigenschaft scope (Bereich) existingClient
ändert sich nicht, wenn das select-Menü wechselt. Wenn kein Wert initialisiert wird (controller-Zeile oben entfernt wird), wird der Wert von existingClient
bleiben undefiniert.
Anbringen eines ng-change
wird ausgelöst, wenn ein Wert geändert, aber das Modell selbst wird nicht aktualisiert, um den neuen Wert ein.
Ich bin mit AngularJS v1.2.0-rc.3.
InformationsquelleAutor der Frage Tyler Shaddix | 2013-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie sind wahrscheinlich mit einem untergeordneten Bereich und wissen es nicht.
ng-if
ng-repeat
ng-switch
undng-include
alle untergeordneten Bereiche. Werte, die auf Ihrem Umfang vererbt werden, aber wenn Sie ändern Sie den Wert in einem untergeordneten Umfang es legt einen Wert auf den untergeordneten Bereich und verlässt den geerbten Wert unverändert auf die Muttergesellschaft. Versuchen Sie es mit einem Objekt, anstatt Ihre Werte und sehen, wenn dieses es regelt. Da Sie nur eine Eigenschaft festlegen auf ein Objekt und nicht einen Wert, der direkt auf den Geltungsbereich werden die übergeordneten Bereich vererbte Objekt und aktualisieren Sie den Wert.Anzeigen:
Können Sie die AngularJS-Erweiterung Batarang in chrome zum Debuggen Ihrer Bereiche.
InformationsquelleAutor der Antwort Jason Goemaat
Dies ist auch eine Lösung, um Parameter in die $scope-Objekt:
controller:
anzeigen:
InformationsquelleAutor der Antwort Christiaan Scheermeijer