Alle gefundenen Knockout-Beispiele scheinen dem Ende eines ObservableArray ein neues Element hinzuzufügen, das etwa Folgendes enthält:
viewModel.SomeItems.Push(someNewItem);
Dadurch wird das Element natürlich am Ende des Arrays platziert.
Wie füge ich ein Objekt an einer bestimmten Position zum ObservableArray hinzu?
z.B. etwas wie:
viewModel.SomeItems.Push(someNewItem, indexToInsertItAt);
Sie sollten in der Lage sein, die native JavaScript splice
-Methode zu verwenden -
viewModel.SomeItems.splice(2,0,someNewItem);
Dokumente hier - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice
Beispiel hier (nicht Knockout-spezifisch) - Einfügen eines Elements in ein Array an einem bestimmten Index?
Aus den Knockout-Dokumenten -
Bei Funktionen, die den Inhalt des Arrays ändern, z. B. Push und Splice, lösen die KO-Methoden automatisch den Abhängigkeitsverfolgungsmechanismus aus, sodass alle registrierten Listener über die Änderung informiert werden und Ihre Benutzeroberfläche automatisch aktualisiert wird.
Zum Aussparen verwenden
viewModel.SomeItems.unshift(someNewItem);
Siehe auch: http://knockoutjs.com/documentation/observableArrays.html
Ich habe diese Erweiterungsfunktion gemacht, die gut für mich funktioniert hat. Splice funktionierte nicht für mich, wenn ich das Ende eines spärlichen Arrays hinzufügte.
ko.observableArray.fn.setAt = function(index, value) {
this.valueWillMutate();
this()[index] = value;
this.valueHasMutated();
}
Dies funktioniert sogar mit:
var a = ko.observableArray(['a', 'b', 'c']);
a.setAt(42, 'the answer');