我如何在特定索引处的knockout数组中插入元素

时间:2014-04-16 19:40:05

标签: knockout.js ko.observablearray

如何在特定索引

的knockout数组中插入元素

我知道我们必须使用切片和推送,但最好的方法是什么以及如何在可观察数组中的特定位置插入新元素

2 个答案:

答案 0 :(得分:6)

使用splicedocs对此并不是很清楚(我必须自己仔细检查),但您可以像常规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"

http://jsfiddle.net/aL4D6/

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

它会将其插入数组中的特定位置。当然,您可以将此代码放在模型中并将其绑定到某个事件。