Ich habe ein Problem damit, Observablen einen Knockout-Extender hinzuzufügen, nachdem sie erstellt wurden. Im folgenden Beispiel wird der Extender immer dann auf foo
ausgeführt, wenn sich der Wert wie erwartet ändert, aber nur einmal beim ersten Aufruf für bar
.
Im Wesentlichen mappe ich ein großes JSON-Objekt und möchte Extender hinzufügen, nachdem das Mapping bei einigen der Eigenschaften aufgetreten ist. Gibt es einen einfachen Weg, dies zu tun?
Unten sehen Sie ein Problem mit dem Problem:
Das Problem, das Sie haben, ist, dass der Extender ein neues beobachtbares Objekt erstellt (basierend auf dem Observable, das es erweitert). Und dieses neue Observable wird in deinem zweiten Aufruf von extend
nicht verwendet.
Um dies zu beheben (ohne den Code des Extenders zu ändern) können Sie die Antwort vom Aufruf von extend
auf die gleiche Eigenschaft, die sie nennt, zuweisen.
Mit anderen Worten, fügen Sie self.bar =
vor Ihrer letzten Zeile hinzu, um dies zu haben:
Tags und Links knockout.js javascript