我如何控制的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