Knockout.js mit `value:` Binding in einem `foreach` über eine Liste von Strings - wird nicht aktualisiert

Hier isteine jsFiddle Demonstration des folgenden Problems:

Bei einer foreach-Bindung über eine Liste von (beobachtbaren) Zeichenfolgen scheinen die Observablen nicht von Änderungen an in foreach gebundenen Eingabetags aktualisiert zu werden. Das würde man von ihnen erwarten. Hier ist das Beispiel von der jsFiddle:

HTML
<ul data-bind='foreach: list'>
    <li><input data-bind='value: $data'/></li>
</ul>

<ul data-bind='foreach: list'>
    <li><span data-bind='text: $data'></span></li>
</ul>
Javascript
​var vm = { list: [ko.observable('123'), ko.observable('456')] };
ko.applyBindings(vm);​

Im obigen Beispiel würde man erwarten, dass die Aktualisierung der Eingabe-Tags in der ersten Liste die Aktualisierung der Observablen verursacht. Leider werden sie nicht wie erwartet aktualisiert. Dies zeigt, dass die zweite Liste keine Änderungen an der ersten Liste enthält.

Ich habe überprüft, dass die Liste tatsächlich nicht aktualisiert wurde, als die Eingabeelemente geändert wurden. Interessanterweise spiegeln sich Änderungen an den Observablen in beiden Listen wider (wie zu erwarten). Nämlich,vm.list[1]("444") aktualisiert das zweite Element beider Listen.

Ich erinnere mich, dass Knockout 2.0.0 dieses Problem nicht hatte, obwohl ich korrigiert werden muss. Ich habe keine Dokumentation, Google oder Kommentare im Knockout-Code gefunden, aus denen hervorgeht, warum dies nicht funktioniert oder wie das erwartete Ergebnis erzielt werden kann.

Warum funktioniert dies nicht wie erwartet und gibt es Problemumgehungen, bei denen die Datenstruktur nicht geändert werden muss?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage