我是durundaljs的新手
我想知道如何过滤ko.observablearray
define(['services / logger','data / data','functions / func'],function(logger,data,func){ var vm = { list:ko.observableArray([]) }; 返回vm; });
我想过滤列表中的项目并将其显示在表格中
感谢
答案 0 :(得分:8)
Knockout具有未记录的实用程序功能,但它们存在于库中以帮助过滤数组。
以下是处理数组的所有实用方法的完整列表:
ko.utils.arrayFilter
ko.utils.arrayFirst
ko.utils.arrayForEach
ko.utils.arrayIndexOf
ko.utils.arrayMap
ko.utils.arrayPushAll
ko.utils.arrayRemoveItem
ko.utils.compareArrays
ko.utils.unwrapObservable
和Ryan Niemeyer写了一篇关于如何使用其中一些内容的blog post。{/ p>
以下是一个快速启动示例:
var newList = ko.utils.arrayFilter(list(), function(item) {
return item.price > 10;
});
这会创建价格超过10的newList
项。
然后,您可以通过传递新列表来更改当前列表:
list(newList);
另一个选项是找到要删除的项目。假设您要删除价格超过10的所有商品:
var rList = ko.utils.arrayFilter(list(), function(item) {
return item.price > 10;
});
接下来你可以打电话:
list.removeAll(rList);
正如他们所说,用一种方法来隐喻猫皮:
list.remove(function(item) { return item.price > 10 });
我相信还有很多方法可以做到。如果您需要一些更高级的过滤数组方法,我建议您查看underscore.js