是否有类似AngularJS';用于Knockout.js的过滤器?
具有内置的概念,因此很容易将数据集简化为与用户输入匹配的元素 有类似的产品可供选择吗是否有类似AngularJS';用于Knockout.js的过滤器?,angularjs,angular-filters,knockout.js,javascript,knockout-3.0,Angularjs,Angular Filters,Knockout.js,Javascript,Knockout 3.0,具有内置的概念,因此很容易将数据集简化为与用户输入匹配的元素 有类似的产品可供选择吗 当然,我可以使用普通的老Javascript自己实现它,但我不是性能专家,所以我自己的解决方案可能会非常慢。我想您正在寻找类似以下函数的函数:ko.utils.arrayMapko.utils.arrayForEachko.utils.arrayFilterko.utils.arrayFirst 你可以在网站上找到这些和更多的东西 它对您有帮助吗?我想您正在寻找类似以下函数:ko.utils.arrayMapk
当然,我可以使用普通的老Javascript自己实现它,但我不是性能专家,所以我自己的解决方案可能会非常慢。我想您正在寻找类似以下函数的函数:
ko.utils.arrayMap
ko.utils.arrayForEach
ko.utils.arrayFilter
ko.utils.arrayFirst
你可以在网站上找到这些和更多的东西
它对您有帮助吗?我想您正在寻找类似以下函数:
ko.utils.arrayMap
ko.utils.arrayForEach
ko.utils.arrayFilter
ko.utils.arrayFirst
你可以在网站上找到这些和更多的东西
它对你有帮助吗?是的,已经创建了敲除插件
这类似于角度过滤器,您可以将贴图或过滤器应用于源集合,以生成另一个集合以绑定到UI
来自项目github自述文件的此示例演示了用法,并解释了如何有效执行映射
和过滤器
回调:
映射
更多信息如下。现在,这里有一个简单的例子:
var sourceItems = ko.observableArray([1, 2, 3, 4, 5]);
有一个普通的可观测阵列。现在让我们假设我们想要跟踪
这些值的平方:
var squares = sourceItems.map(function(x) { return x*x; });
现在,squares
是一个可观察的数组,包含[1,4,9,16,25]
。让我们修改源数据:
sourceItems.push(6);
// 'squares' has automatically updated and now contains [1, 4, 9, 16, 25, 36]
这适用于源数据的任何转换,例如:
sourceItems.reverse();
// 'squares' now contains [36, 25, 16, 9, 4, 1]
这个库的关键点是这些转换是高效完成的。具体来说,您的回调函数
只有在严格必要时才调用映射(通常是
仅适用于新添加的项目)。将新项目添加到源时
数据,我们不需要重新映射现有的数据。当你重新订购时
在源数据中,输出顺序会相应地更改,而不会更改
重新映射任何内容
如果你只是将数字平方,那么这个效率可能不会有多大影响,
但是,当您映射自定义对象的复杂嵌套图时,它
以最少的时间执行每个映射更新可能很重要
工作
过滤
除了映射
,该插件还提供过滤器
:
var evenSquares = squares.filter(function(x) { return x % 2 === 0; });
// evenSquares is now an observable containing [36, 16, 4]
sourceItems.push(9);
// This has no effect on evenSquares, because 9*9=81 is odd
sourceItems.push(10);
// evenSquares now contains [36, 16, 4, 100]
同样,您的filter
回调仅在严格执行时才被调用
必要的。重新订购或删除源项目不需要任何
重新过滤-输出只需更新以匹配。仅新增
源项必须接受过滤器回调
是的,已经创建了敲除插件
这类似于角度过滤器,您可以将贴图或过滤器应用于源集合,以生成另一个集合以绑定到UI
来自项目github自述文件的此示例演示了用法,并解释了如何有效执行映射
和过滤器
回调:
映射
更多信息如下。现在,这里有一个简单的例子:
var sourceItems = ko.observableArray([1, 2, 3, 4, 5]);
有一个普通的可观测阵列。现在让我们假设我们想要跟踪
这些值的平方:
var squares = sourceItems.map(function(x) { return x*x; });
现在,squares
是一个可观察的数组,包含[1,4,9,16,25]
。让我们修改源数据:
sourceItems.push(6);
// 'squares' has automatically updated and now contains [1, 4, 9, 16, 25, 36]
这适用于源数据的任何转换,例如:
sourceItems.reverse();
// 'squares' now contains [36, 25, 16, 9, 4, 1]
这个库的关键点是这些转换是高效完成的。具体来说,您的回调函数
只有在严格必要时才调用映射(通常是
仅适用于新添加的项目)。将新项目添加到源时
数据,我们不需要重新映射现有的数据。当你重新订购时
在源数据中,输出顺序会相应地更改,而不会更改
重新映射任何内容
如果你只是将数字平方,那么这个效率可能不会有多大影响,
但是,当您映射自定义对象的复杂嵌套图时,它
以最少的时间执行每个映射更新可能很重要
工作
过滤
除了映射
,该插件还提供过滤器
:
var evenSquares = squares.filter(function(x) { return x % 2 === 0; });
// evenSquares is now an observable containing [36, 16, 4]
sourceItems.push(9);
// This has no effect on evenSquares, because 9*9=81 is odd
sourceItems.push(10);
// evenSquares now contains [36, 16, 4, 100]
同样,您的filter
回调仅在严格执行时才被调用
必要的。重新订购或删除源项目不需要任何
重新过滤-输出只需更新以匹配。仅新增
源项必须接受过滤器回调
核心KO库中没有内置这样的东西。因此,您需要在常规js函数中或使用ko.computeds实现“过滤器”逻辑。然而,有一个插件名为:它提供了一个类似角度的过滤器能力:我想这个插件就是你要找的。它允许您创建可观察数组,这些数组是通过应用于另一个可观察数组的map
和filter
函数创建的。这是否回答了您的问题?核心KO库中没有内置这样的东西。因此,您需要在常规js函数中或使用ko.computeds实现“过滤器”逻辑。然而,有一个插件名为:它提供了一个类似角度的过滤器能力:我想这个插件就是你要找的。它允许您创建可观察数组,这些数组是通过应用于另一个可观察数组的map
和filter
函数创建的。这是否回答了您的问题?