我如何控制的foreach忽略使用比较某些元素?Knockout.js的foreach:但只有当比较结果为真
我想要的例子是这样的:
<div data-bind="foreach: entry where (entry.number > 10)">
所以,我希望它做的是循环遍历entry
的,但是当电流entry
拥有超过10 number
值只执行。
这是可能的吗?
我如何控制的foreach忽略使用比较某些元素?Knockout.js的foreach:但只有当比较结果为真
我想要的例子是这样的:
<div data-bind="foreach: entry where (entry.number > 10)">
所以,我希望它做的是循环遍历entry
的,但是当电流entry
拥有超过10 number
值只执行。
这是可能的吗?
目前这是不可能的knockout.js,但它是一个有趣的功能。您应该提交错误报告/联系作者以考虑将来的版本。
方法1:
<div data-bind="foreach: entry">
<div data-bind="if: entry.number > 10"></div>
</div>
方式2:
编写自定义过滤器的方法,让您匹配您的条件,并在您的foreach
使用该元素的数组。
试试这个:
<div data-bind="foreach: editingItem.columns">
<!-- ko if: Selected-->
<div data-bind="text: Name"></div>
<input type="text"/>
<!-- /ko -->
@JustMe嗨,不错的答案,我没有斑的< - 如果KO:选择 - >在第一,直到我做了一些研究。注意if绑定可以在注释中工作,这一点很重要。 http://knockoutjs.com/documentation/if-binding.html也可能是一个好主意来修改你的答案,以便它特别适用于这个问题,例如使用“entry.number”这种方式可以更容易地看到它是如何应用于解决问题的。 – 2012-05-11 17:43:00
感谢@AlexKey我是KnockoutJS的新成员,我通过了教程,他们非常有用。 – JustMe 2012-09-18 04:48:12
适用于过滤表格行。 – Rake36 2013-05-07 19:59:08
什么
<div data-bind="foreach: _.filter(entry(), function(item) { return item.number > 10;})">
使用underscore.js
不错!下划线是da-bomb – skrile 2014-10-10 19:24:06
我认为这将是更好地使用内置的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 **路** 1,你的答案之前,作为一种替代 - 猜我会坚持它。谢谢! – LouwHopley 2012-01-15 13:31:12
没问题,我有点知道,因为这是通常的方式,但反正它包括:d – 2012-01-15 13:37:09