Ich habe ein Produktmodell mit einer Eigenschaft, die ich an ein separates Array von Optionen binden möchte. Grundsätzlich von Produktmodell hat eine Eigenschaft namens ‚Kategorie‘, wie folgt aus:ng-option Auswahl gebunden an separates Array
productModel = {
Id : 1,
Description: 'Widget',
Category: 0,
...
Wie Sie sehen können, das Eigentum ist ein int (aus dem db), aber ich erhalte auch eine separate Anordnung von dem, was die Kategorien sind:
Categories : [
{ "Number" : 0, Name : "N/A" },
{ "Number" : 1, Name : "Option 1" },
{ "Number" : 2, Name : "Option 2" }
]
ich möchte mit dem entsprechenden Wert einer Auswahlliste in der Lage sein gezeigt, so dass, wenn das Produktmodell mit 0 Set kommt zurück dann der Standardwert in der Auswahlliste wird „N/A“ sein.
ich erreicht habe, dies zu tun:
<select ng-model="Categories[productModel.Category]" ng-options="v.name for v in Categories" ...
aber das Problem dabei ist, dass, wenn ich die Option ändern Sie den Wert nicht zurück zum Modell ist verbindlich. Da die Daten auf dem Server zurückgeschickt werden, wenn der Benutzer den Wert ändert, möchte ich das productModel nicht so ändern, dass es die gleiche Namens- und Nummernstruktur wie die Kategorien hat (das kann ich, wenn es der beste Weg ist). Ich möchte nur, dass der Benutzer eine Option auswählen kann und das Produktmodell die entsprechende Nummer enthält.
Kann ich (soll ich) das mit "Track by" machen?
fügen Sie eine 'ng-change = myFunction()' hinzu und implementieren Sie in Ihrem '$ scope' die Logik dieser Funktion, die die Eigenschaft der Modellvariable setzt – Naigel
Stellen Sie das' productModel' auf den Server? –
Ja. Wenn der Benutzer auf eine Schaltfläche zum Speichern klickt, lasse ich das Produktmodell einfach durch Ajax zurück. Ich möchte, dass es genauso aussieht, wie es wirklich herauskommt, aber ich kann das Modell ändern, während es hin und her geht – GrahamJRoy