如何通过使用比较来控制foreach忽略某些元素?我想要的例子是这样的:
<div data-bind="foreach: entry where (entry.number > 10)">
所以我希望它在entry中循环,但只在当前entry的number值大于10时执行。这可能吗?
entry
number
tcbh2hod1#
目前knockout.js还不能做到这一点,但这是一个有趣的特性。你应该提交一个错误报告/联系作者,考虑在未来的版本中使用它。
方式1:
<div data-bind="foreach: entry"> <div data-bind="if: entry.number > 10"></div> </div>
方式二:
编写一个自定义的过滤器方法,该方法为您提供一个与条件匹配的元素数组,并在foreach中使用该方法。
foreach
bvpmtnay2#
请尝试以下操作:
<div data-bind="foreach: editingItem.columns"> <!-- ko if: Selected--> <div data-bind="text: Name"></div> <input type="text"/> <!-- /ko -->
wwwo4jvm3#
我认为最好使用内置的arrayFilter方法(请参见http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html)
viewModel.filteredEntries = ko.computed(function() { return ko.utils.arrayFilter(this.entries(), function(item) { return item.number > 10; }); }, viewModel);
然后,您可以像通常那样将数据绑定到filteredEntries
9w11ddsr4#
那怎么办
<div data-bind="foreach: _.filter(entry(), function(item) { return item.number > 10;})">
使用下划线. js
i2byvkas5#
你可以使用array.filter函数来过滤数组,不要忘记传递“this”
<div data-bind="foreach: yourArrayHere.filter(function(entry){return entry.number > 10}, this)">
5条答案
按热度按时间tcbh2hod1#
目前knockout.js还不能做到这一点,但这是一个有趣的特性。你应该提交一个错误报告/联系作者,考虑在未来的版本中使用它。
方式1:
方式二:
编写一个自定义的过滤器方法,该方法为您提供一个与条件匹配的元素数组,并在
foreach
中使用该方法。bvpmtnay2#
请尝试以下操作:
wwwo4jvm3#
我认为最好使用内置的arrayFilter方法(请参见http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html)
然后,您可以像通常那样将数据绑定到filteredEntries
9w11ddsr4#
那怎么办
使用下划线. js
i2byvkas5#
你可以使用array.filter函数来过滤数组,不要忘记传递“this”