如何使用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');