Rxjs Beobachtung Objekt-updates und änderungen
Ich versuche zurzeit, zu beobachten, alle änderungen zu einem Objekt inklusive aller Elemente.
Dem folgenden code wird nur ausgelöst, wenn ein Objekt[x] updates, aber nicht, wenn Sie individuell Aktualisierung object[x]'s-Elemente wie Objekt[x][y]
<script>
var elem = document.getElementById("test1");
var log = function(x) {
elem.innerHTML += x + "<br/><br/><br/>";
};
var a = [{a:1,b:2},
{a:2,b:5}
];
var source = Rx.Observable
.ofObjectChanges(a)
.map(function(x) {
return JSON.stringify(x);
});
var subscription = source.subscribe(
function (x) {log(x);},
function (err) {log(err);},
function () {log('Completed');}
);
a[0] = a[1];
</script>
Dieser code ausgeführt, und feuert richtig.
jedoch. wenn ich statt dieser
a[0]['a'] = 3;
Dann passiert nichts.
BEARBEITEN
Einen besseren Weg zu formulieren, wie kann ich das beobachten der änderungen aus einem array von Objekten?
- Wahrscheinlich fangen Sie mit dem verwenden
ofArrayChanges
statt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen nur das verschachtelte Objekt änderungen:
Wenn Sie wollen auch änderungen wie
a[0] = a[1]
:Den
flatMap
oderselectMany
(Sie haben die gleiche Funktion) wird Ihnen ermöglichen, Durchlaufen Sie einen Wert ein, und führen Sie eine Funktion zurückgibt, die ein zu Beobachten ist. Die Werte aller dieser Observablen sind "abgeflacht" auf einen neuen stream, der zurückgegeben wird.http://reactivex.io/documentation/operators/flatmap.html
Vielleicht so etwas wie dies durch die Zusammenlegung von zwei Observablen (eine für das array und die andere beobachten, die Elemente des Arrays):
Dank @electrichead hier sind wir nicht mit
concatMap
weil die Quellen, die wir durchofObjectChanges
undofArrayChanges
nie abgeschlossen.Hier ist ein funktionierendes Beispiel von Rx.Beobachtbar ist.ofNestedObjectChanges einfache Implementierung können Sie das wesentliche von it und umzusetzen, die Sie besitzen.
http://jsbin.com/wekote/edit?js,Konsole