knockoutjs ObservableArrays und Sortierfunktion: Die Benutzeroberfläche wird nicht aktualisiert

In meinem Ansichtsmodell habe ich ein knockoutjs ObserableArray. Kurz nachdem ich das ViewModel initialisiert habe, werden die Daten erfolgreich gebunden. Dann muss ich die Sammlung sortieren.

<code>$.each(vm.searchResults(), function (i, property) {
    console.log(property.Name());
});

vm.searchResults().sort(function (a, b) {
    return a.Name().toLowerCase() > b.Name().toLowerCase() ? 1 : -1;
});

$.each(vm.searchResults(), function (i, property) {
    console.log(property.Name());
});
</code>

Wie Sie sehen, gebe ich den Namen des Elements an die Konsole aus, um die Reihenfolge vor und nach dem Sortieren zu sehen. Die Sortierung funktioniert einwandfrei. Das Problem ist mit dem UI-Update. Irgendwie wird die Benutzeroberfläche nicht aktualisiert.

Versuchen Sie dann, einen Datensatz mit dem folgenden Code aus dem Array zu entfernen, um festzustellen, ob die Benutzeroberfläche darauf reagiert oder nicht:

<code>vm.searchResults().shift();
</code>

Die Benutzeroberfläche bleibt unverändert und wurde nicht erneut aktualisiert. Was wäre das Problem hier?

Bearbeiten:

Hier ist auch ein Beispielfall:http://jsfiddle.net/tugberk/KLpwP/

Das gleiche Problem auch hier.

Bearbeiten:

Ich habe das Problem folgendermaßen gelöst:http://jsfiddle.net/tugberk/KLpwP/16/ Aber ich bin mir immer noch nicht sicher, warum es funktioniert hat, als ich es zuerst versuchte.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage