Wie kann ich ein ko.observableArray von Strings binden?

8

Ich versuche, ein ko.observableArray von Zeichenfolgen an eine Vorlage zu binden, aber ich kann die Vorlage nicht dazu bringen, Änderungen in den Zeichenfolgen im Array aufzunehmen.

Wenn ich eine Reihe von Objekten anstelle einer Reihe von Strings binde, erhalte ich Updates für den JSON, aber sie lösen nichts aus, bis ich tatsächlich den ersten Wert ohne Array ändere. Ich würde jedoch lieber ein Array mit Strings finden, da ich das Datenmodell ohne Nachbearbeitung direkt zurück auf den Server stellen kann.

Wie kann ich die Aktualisierungen für meine Arrays von Zeichenfolgen auslösen und wie kann ich sicherstellen, dass sie Änderungen korrekt auslösen, ohne dass ein Nicht-Array-Wert aktualisiert werden muss?

Wenn es nicht möglich ist, an ein beobachtbares Array von Strings zu binden, wie kann ich die Ereignisse auslösen, wenn ich die Objekte innerhalb des beobachtbaren Arrays aktualisiere?

Siehe das Beispiel hier: Ссылка

In diesem Beispiel werden die Daten von array3 im Modell widergespiegelt, wenn sich der Wert ändert, aber Änderungen an den Daten von array1 und array2 werden niemals angezeigt.

JS:

%Vor%

HTML:

%Vor%     
slipheed 01.04.2013, 16:24
quelle

2 Antworten

5

Aus den Dokumenten:

  

Einfach ein Objekt in ein ObservableArray zu setzen, macht nicht alles   die Eigenschaften dieses Objekts selbst sind beobachtbar. Natürlich kannst du   Machen Sie diese Eigenschaften beobachtbar, wenn Sie es wünschen, aber das ist ein   unabhängige Wahl. Ein ObservableArray verfolgt nur, welche Objekte es sind   hält Listen und benachrichtigt Listener, wenn Objekte hinzugefügt oder entfernt werden.

Sie müssen ein Objekt erstellen, das eine beobachtbare Eigenschaft (des Strings) besitzt. Dann mache ein ObservableArray dieser Objekte.

Hier ein Beispiel, das die Eigenschaft eines Objekts 2 Sekunden nach dem Anwenden der Bindungen aktualisiert:

%Vor%

Hier ist ein vollständiges, lauffähiges Beispiel: Ссылка

    
PatrickSteele 01.04.2013, 16:38
quelle
9

Wenn Sie in KO 3 auf $ rawData in der Bindung zeigen, funktioniert das Array2-Beispiel wie erwartet.

    
user3846373 16.07.2014 18:53
quelle