Ich versuche, eine Reihe von Kontrollkästchen aus einem Objektarray zu generieren. Ich möchte, dass die Kontrollkästchen ihr ng-Modell dynamisch einer Eigenschaft des neuen Objekts zuordnen, das an das Array gesendet wird.
Was ich vorhatte, ist so etwas wie
<li ng-repeat="item in items">
<label>{{item.name}}</label>
<input type="checkbox" ng-model="newObject.{{item.name}}">
</li>
Dies funktioniert nicht, wie auf dieser JSFiddle zu sehen ist:
http://jsfiddle.net/GreenGeorge/NKjXB/2/
Kann jemand helfen?
javascript
angularjs
George Ananda Eman
quelle
quelle
item.name
manchmal aufnewObject['x']
und manchmal auf zeigennewObject['x']['y']
.BEARBEITEN Wie in den Kommentaren korrekt angegeben, erfordert die Verwendung dieser Option mit ng-change, dass zuvor ein "Dummy" -ng-Modell vorhanden ist. Es sollte jedoch beachtet werden, dass anscheinend mit 1.3 die erforderlichen Optionen vom Framework bereitgestellt wurden. Bitte überprüfen Sie https://stackoverflow.com/a/28365515/3497830 unten! /BEARBEITEN
Nur für den Fall, dass Sie wie ich über einen einfachen Fall stolpern, während Sie eine komplexere Aufgabe haben, ist dies die Lösung, die ich gefunden habe, um beliebige Ausdrücke dynamisch an ng-model zu binden: http://plnkr.co/edit/ccdJTm0zBnqjntEQfAfx?p = Vorschau
Methode: Ich habe eine Direktive dynamicModel erstellt, die einen Standardwinkelausdruck verwendet, ihn auswertet und das Ergebnis über ng-model und $ compile mit dem Bereich verknüpft.
Die Verwendung ist einfach dynamic-model = "angularExpression", wobei angularExpression zu einer Zeichenfolge führt, die als Ausdruck für ng-model verwendet wird.
Ich hoffe, das erspart jemandem die Kopfschmerzen, diese Lösung finden zu müssen.
Grüße, Justus
quelle
Mit Angular 1.3 können Sie mithilfe der
ng-model-options
Direktive das Modell dynamisch zuweisen oder an einen Ausdruck binden.Hier ist ein Plunkr: http://plnkr.co/edit/65EBiySUc1iWCWG6Ov98?p=preview
Weitere Informationen finden Sie
ngModelOptions
hier: https://docs.angularjs.org/api/ng/directive/ngModelOptionsquelle
Dies ist mein Ansatz, um einen tieferen Ausdruck zu unterstützen, z. B. 'model.level1.level2.value'.
Dabei ist item.modelPath = 'level1.level2' und Utility (Modell, 'level1.level2') die Utility-Funktion, die model.level1.level2 zurückgibt
quelle
quelle