2012-01-15 18 views
18

我如何控制的foreach忽略使用比較某些元素?Knockout.js的foreach:但只有當比較結果爲真

我想要的例子是這樣的:

<div data-bind="foreach: entry where (entry.number > 10)"> 

所以,我希望它做的是循環遍歷entry的,但是當電流entry擁有超過10 number值只執行。

這是可能的嗎?

回答

23

目前這是不可能的knockout.js,但它是一個有趣的功能。您應該提交錯誤報告/聯繫作者以考慮將來的版本。

方法1:

<div data-bind="foreach: entry"> 
    <div data-bind="if: entry.number > 10"></div> 
</div> 

方式2:
編寫自定義過濾器的方法,讓您匹配您的條件,並在您的foreach使用該元素的數組。

+0

我跟着filteredEntries **路** 1,你的答案之前,作爲一種替代 - 猜我會堅持它。謝謝! – LouwHopley 2012-01-15 13:31:12

+0

沒問題,我有點知道,因爲這是通常的方式,但反正它包括:d – 2012-01-15 13:37:09

17

試試這個:

<div data-bind="foreach: editingItem.columns"> 
     <!-- ko if: Selected--> 
     <div data-bind="text: Name"></div> 
      <input type="text"/> 
      <!-- /ko --> 
+0

@JustMe嗨,不錯的答案,我沒有斑的< - 如果KO:選擇 - >在第一,直到我做了一些研究。注意if綁定可以在註釋中工作,這一點很重要。 http://knockoutjs.com/documentation/if-binding.html也可能是一個好主意來修改你的答案,以便它特別適用於這個問題,例如使用「entry.number」這種方式可以更容易地看到它是如何應用於解決問題的。 – 2012-05-11 17:43:00

+0

感謝@AlexKey我是KnockoutJS的新成員,我通過了教程,他們非常有用。 – JustMe 2012-09-18 04:48:12

+0

適用於過濾表格行。 – Rake36 2013-05-07 19:59:08

4

什麼

<div data-bind="foreach: _.filter(entry(), function(item) { return item.number > 10;})"> 

使用underscore.js

+0

不錯!下劃線是da-bomb – skrile 2014-10-10 19:24:06