私が見つけたすべてのノックアウトの例は、次のようなものを使用して、ObservableArrayの最後に新しい項目を追加するようです。
viewModel.SomeItems.Push(someNewItem);
もちろん、これは項目を配列の最後に配置します。
特定の位置でObservableArrayにアイテムを追加する方法は?
例えば。何かのようなもの:
viewModel.SomeItems.Push(someNewItem, indexToInsertItAt);
ネイティブJavaScript splice
メソッドを使用できるはずです-
viewModel.SomeItems.splice(2,0,someNewItem);
ここのドキュメント- https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice
ここの例(ノックアウト固有ではありません)- 特定のインデックスで配列にアイテムを挿入する方法?
Knockoutドキュメントから-
Pushやspliceなどの配列の内容を変更する関数の場合、KOのメソッドは自動的に依存関係追跡メカニズムをトリガーし、登録されているすべてのリスナーに変更が通知され、UIが自動的に更新されます。
ノックアウト用
viewModel.SomeItems.unshift(someNewItem);
参照: http://knockoutjs.com/documentation/observableArrays.html
私はこの拡張機能を作成しました。スパース配列の最後に追加した場合、スプライスは機能しませんでした。
ko.observableArray.fn.setAt = function(index, value) {
this.valueWillMutate();
this()[index] = value;
this.valueHasMutated();
}
これは以下でも動作します:
var a = ko.observableArray(['a', 'b', 'c']);
a.setAt(42, 'the answer');