0

我是 durundaljs 的新手

我想知道如何过滤 ko.observablearray

define(['services/logger', 'data/data', 'functions/func'], function (logger, data, func) { var vm = { list: ko.observableArray([]) }; return vm; } );

我想过滤列表中的项目并将其显示在表格中

谢谢

4

1 回答 1

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 写了一篇关于如何使用其中一些的不错的博客文章。


方法一

这是一个快速入门的示例:

var newList = ko.utils.arrayFilter(list(), function(item) {
   return item.price > 10;
});

这将创建一个newList价格超过 10 的项目。然后您可以通过将新列表传递给当前列表来更改当前列表:

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

于 2013-03-26T16:51:26.817 回答