Wie leer ein JS-Objekt?
Habe ich ein Objekt wie
var person = {'id':null, 'name':'John Doe'}
Nach dem einfügen des Objekts den Wert in der Datenbank, bekomme ich ein anderes Objekt vom server:
var personInDB = {'id':1234, 'name':'John Doe'}
Habe ich verwendet angular.merge
zu verwenden, aktualisiert der Wert person
mit der personInDB
.
Aber, ich will leer person
Objekt vor der Anwendung angular.merge
, so dass ich nur die Werte in der Datenbank. Ich weiß nicht zuweisen möchten neues leeres Objekt, person so, dass eine Unterbrechung der Daten-Bindung in den Winkel.
- Warum Sie nicht versuchen, Sie zu nutzen
$resource
dann?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht bewusst jede Art von built-in-Objekt
.deleteAllProperties()
- Methode, so dass die Blätter Durchlaufen der Eigenschaften und aufrufendelete
auf jeden einzeln. Folgenden ist eine halbwegs saubere Art, das zu tun:Oder die etwas längere nicht-ES6-Pfeil-Funktion version für die Unterstützung so weit zurück wie IE9:
Für noch ältere IE-verwenden Sie einfach ein
for..in
- Schleife (mit einer.hasOwnProperty()
überprüfen).Und natürlich können Sie jede der oben in einer Funktion für eine einfache re-use:
Beachten Sie, dass obwohl diese Antworten, was Sie gefragt haben, ich bin mir nicht sicher, warum Sie denken, Sie brauchen es überhaupt zu tun. Das Beispiel, das Sie zeigen, in der Frage hat gleich zwei Eigenschaften vor und nach, so
angular.merge()
würde einfach überschreiben die alten Werte mit den neuen Werten ohne jegliche Notwendigkeit, zunächst ein leeres Objekt. (Sind Sie versuchen, für einen Fall (nicht dargestellt), wo die alte version von Ihrem Objekt kann Eigenschaften haben, die nicht mehr vorhanden in der neuen version?)name
, ich möchte meine lokalen Objektsname
- Eigenschaft gelöscht.wenn Sie möchten, leeren Sie die 'id' nur
wenn Sie möchten, leeren Sie alle Attribute des person-Objekts, dann
Wenn ich das richtig verstehe, Sie scheinen zu denken, dass Sie brauchen, um leere original-Objekt vor der Zusammenführung in die neue oder die Eigenschaften aus der Datenbank nicht verwendet werden. Ich glaube nicht, dass das der Fall aber. Ich schaute auf die Quelle für
angular.merge
und es scheint zu kopieren (sprich: überschreiben) jedes Objekt vom Quell-Objekt auf das Zielobjekt. So müssen Sie sich nicht leeren, es auf allen, nur den Seriendruck und die Werte auf der Datenbank-Objekt verwendet werden.Gut, um zu vermeiden, bricht angularjs ist Datenbindung ich jetzt aktualisieren jedes Feld manuell:
Wenn Sie ECAM6,dann können Sie Destructuring_assignment
ODER
Können Sie haben wie diese.
[person] = [personInDB ]
code es hatte das gleiche Ergebnis wieperson = personInDB
es nicht aktualisieren das vorhandene Objekt, dassperson
konnte beziehen sich auf (das ist das, was der OP gefragt).[a,b] = [c,d]
...