如何在特定索引
的knockout数组中插入元素我知道我们必须使用切片和推送,但最好的方法是什么以及如何在可观察数组中的特定位置插入新元素
答案 0 :(得分:6)
使用splice
。 docs对此并不是很清楚(我必须自己仔细检查),但您可以像常规javascript .splice一样使用它来插入元素以及删除元素。例如:
var vm = {
array : ko.observableArray(["foo","bar"])
};
ko.applyBindings(vm);
function Add() {
vm.array.splice(1,0,"ra"); // at index 1 - remove 0 elements and add "ra"
}
Add(); // "ra" gets inserted between "foo" and "bar"
答案 1 :(得分:2)
我可以使用splice正常进行(没有切片和推送的原因,因为拼接实际上可以做到这一点)。只需将您的起始位置设置为0,然后指定您实际上不想删除项目,只添加。
var ViewModel = function() {
this.list = ko.observableArray([1, 2, 3, 5]);
};
vm = new ViewModel();
ko.applyBindings(vm);
所以,如果你做了类似
的事情vm.list.splice(3,0, 'new element');
它会将其插入数组中的特定位置。当然,您可以将此代码放在模型中并将其绑定到某个事件。