在索引之后删除Knockout observable数组

时间:2014-04-03 09:07:51

标签: javascript knockout.js

我正在寻找一种方法来淘汰去除一个可观察数组中的所有元素,这些元素来自一个给定的索引。

执行此操作的for循环效率很低,因为一次删除一个元素会触发每次删除时的更改通知。有没有开箱即用的东西?

1 个答案:

答案 0 :(得分:5)

试试这个(注意HowMany是可选的,如果你没有指定它,将删除StartIndex之后的所有项目):

myObservableArray.splice(StartIndex, HowMany)

如果你需要删除具有某些属性的项目,你可以传递一个函数,将一个布尔值返回到knockout的remove函数,例如:

myObservableArray.remove(function(item) { return item.property > YourValue })

+ 引用来自淘汰文档:LINK

Normally, an observableArray notifies its subscribers immediately, as soon as it’s 
changed. But if an observableArray is changed repeatedly or triggers expensive updates,
you may get better performance by limiting or delaying change notifications. This is
accomplished using the rateLimit extender like this:

// Ensure it notifies about changes no more than once per 50-millisecond period
myViewModel.myObservableArray.extend({ rateLimit: 50 });