如何使用Knockout.js将某个项目添加/插入某个位置的ObservableArray

我find的所有挖空的例子似乎都添加了一个新的项目到一个ObservableArray的末端使用类似的东西:

viewModel.SomeItems.push(someNewItem); 

这当然会把项目放在数组的末尾。

如何添加一个项目的ObservableArray在某个位置?

例如。 就像是:

 viewModel.SomeItems.push(someNewItem, indexToInsertItAt); 

您应该可以使用本机JavaScript splice方法 –

 viewModel.SomeItems.splice(2,0,someNewItem); 

Docs here – 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

我做了这个扩展function,很适合我。 如果我将数组添加到稀疏数组的末尾,那么拼接对我来说不起作用。

 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');