Ich habe eine einfache Datei erstellt, um meine Frage zu illustrieren:
Html:
%Vor%Javascript:
%Vor%Wie Sie sehen können, sind die Werte bindend, wenn ich die Eigenschaften manuell festlege. Aber wenn ich ein Objekt überschreibe, passiert nichts. Wie ist das möglich? Und was muss ich tun, wenn ich ein Objekt im Originalzustand wiederherstellen möchte?
Stellen Sie sich vor, ich erstelle ein Backup-Objekt mit var productBackup = angular.copy(product)
. Dann nehme ich Änderungen am Originalprodukt vor und entscheide mich später, meine Änderungen abzubrechen. Ich möchte dies mit product = productBackup
tun. Aber das geht nicht! Muss ich in diesem Fall alle Eigenschaften manuell so einstellen?
Wenn Sie angular.copy(source, destination)
verwenden, können Sie den gewünschten Effekt erzielen.
Was passiert, ist, dass angular immer noch die ursprüngliche p
-Referenz beobachtet, selbst nachdem Sie die Aufgabe erledigt haben. Wenn Sie angular.copy()
verwenden, kopieren Sie die Werte von prod
nach p
, die eckig korrekt anzeigt.
Ich fragte eine ähnliche Frage nach einer Frage , aber dieses Problem wurde in einem gemeinsamen Dienst behandelt.
Ich habe noch nie mit AngularJS gearbeitet, aber ich denke, dass hier der Parameter p
nicht Ihr einfaches Schlüssel / Wert-Objekt ist, sondern ein komplexeres AngularJS-Objekt. Indem Sie Ihr prod
zuweisen, überschreiben Sie es, anstatt bestimmte Teile des Objekts zu ändern.
Vielleicht hilft Ihnen das folgende Code-Snippet:
%Vor%Tags und Links javascript angularjs