2017-02-15 2 views
0

Verwenden von Angular 1.5.8.Angular Merge funktioniert nicht

Ich habe eine Funktion andere Komponenten aufrufen, um das Elternteil aktualisiert zu halten. Der Elternteil behält die Masterkopie der Entität bei, die bearbeitet wird, die ich Widget nennen werde. Auf init ich drei Felder auf das Widget

{a:Array[0],b: {},c:{}} 

Sobald eine der Komponenten lädt Daten über resource $ es die Update-Funktion ruft in einem Objekt, das d einzustellen versucht. Wenn ich d in dev Tools Konsole aus, sagt er d ein Objekt ein, wenn ich es erweitern erhalte ich:

status: Resource 
    x: "something" 
    y: "something else" 

nächsten I angular.toJson auf d nennen und bekommen {"status":{"x":"something","y":"something else"}}

schließlich nenne ich angular.merge(widget,resultFromToJsonAbove) und Druck Das Ergebnis: Ich bekomme mein ursprüngliches Widget ohne Statusobjekt zurück. Wenn ich in einem Plumpser mit 1.5.8 experimentiere, wird minimaler Beispielstatus zum Widget hinzugefügt. Vermisse ich etwas oder übersehe etwas?

Antwort

1

angular.toJson erstellt eine Zeichenfolge und Sie können keine Zeichenfolge auf ein vorhandenes Objekt zusammenführen, da angular.merge zwei Objekte (Maps) erwartet. Sie rufen es mit einem Objekt und einer Zeichenfolge auf.

Wenn Sie es wirklich so machen wollen, müssen Sie die Zeichenfolge zurück zu einem Objekt mit angular.fromJson deserialisieren und das zum Zusammenführen übergeben.