Geben Sie den Code in meinem Controller:
%Vor% Wie verknüpfe ich ngModel
dynamisch mit der Eigenschaft von entity
, die von path
?
Ich habe so etwas versucht, aber ohne Erfolg:
%Vor% Slava, ich bin mir nicht sicher, ob das eine gute Idee ist. Aber trotzdem
Sie müssen Ihr Modell getterSetter darauf aufmerksam machen, indem Sie diese Eigenschaft zu Ihrer Eingabe ng-model-options="{ getterSetter: true }
hinzufügen.
Dann brauchen Sie eine Funktion in Ihrem Controller, die einen GetterSetter aus einem Stachel baut.
So würde die resultierende Vorlage aussehen.
Glücklicherweise hat eckig einen $ parse-Dienst, der das viel einfacher macht. also müsste so etwas in Ihrem Controller sein, oder noch besser in einem injizierten Service.
%Vor%Das wird eine Getter-Setter-Funktion zurückgeben, die dies für Sie erledigt. Sehen Sie es in Aktion in diesem Plunk
Sie können die Klammernotation mit einer kleinen Änderung verwenden, da Sie an eine verschachtelte Eigenschaft binden möchten. Sie müssen den Pfad auf die Eigenschaft:
aufteilen %Vor%Controller:
%Vor%Siehe js fiddle
Nachdem ich die Antwort von Sander Elias gelesen und benutzt hatte, benutzte ich dies, stieß aber auf ein anderes Problem.
Wenn Sie sein Ergebnis mit ng-required="true"
in <input>
kombinieren, können Sie das Feld nicht leeren, denn wenn das Feld leer ist, wird newVal
als undefined
übergeben.
Nach einigem Nachforschen fand ich eine Frage auf GitHub , die anspricht und löst Dieses Problem.
Hier sehen Sie, wie Sander's und die GitHub-Antwort aussehen:
%Vor% argument.length
gibt die Anzahl der Werte an, die an den Getter / Setter übergeben werden, und ist 0
für einen get und 1
für einen Satz.
Abgesehen davon habe ich das angular.isDefined()
als Sumit hinzugefügt vorgeschlagen in einem Kommentar , um auch false
und leere ( ""
) Werte zu speichern.
Hier ist ein aktualisierter Plunker
Tags und Links javascript angularjs angular-ngmodel