如何使用 Knockout.js 在特定位置将一个条目添加/插入到 Observer ableArray 中

我所发现的所有淘汰例子似乎都使用了类似下面这样的东西,在 Observer ableArray 的末尾添加了一个新项:

viewModel.SomeItems.push(someNewItem);

当然,这会将该项放在数组的末尾。

如何在某个位置将一个项添加到 Observer ableArray?

例如:

viewModel.SomeItems.push(someNewItem, indexToInsertItAt);
45353 次浏览

您应该能够使用原生的 JavaScriptsplice方法-

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

这里是医生 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice

这里的示例(不是特定于敲除) -如何插入一个项目到一个特定的索引数组?

从击倒文件-

用于修改数组内容的函数,如 push 和 拼接,KO 的方法自动触发依赖跟踪 机制,以便将更改通知所有已注册的侦听器, 你的用户界面会自动更新。

用来击倒对手

viewModel.SomeItems.unshift(someNewItem);

参见: http://knockoutjs.com/documentation/observableArrays.html

我创建了这个扩展函数,它对我很有用。如果我要添加到稀疏数组的末尾,Splice 就不起作用。

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