2015-12-04 59 views
0

我正在使用一個挖空模板將可觀察數組綁定到視圖。我有一個對象數組,但我想只顯示滿足一定條件的對象。無論如何要使用淘汰賽模板綁定來做到這一點?我目前正在使用第二個解決方案(工作原理),因爲第一個解決方案導致錯誤,但我覺得可能有一個更簡潔的方法來做到這一點。'模板'綁定中'if'與'foreach'結合使用敲除

期望的解決方案(錯誤的產品沒有定義):

<div class="productItem" data-bind="template: { name: 'product-template',foreach:'history', as:'product', if: product.Count === 1}"></div> 

我的解決方法解決:

<!-- ko foreach: { data: history, as: 'product' } --> 
<div class="productItem" data-bind="template: { name: 'product-template', if: product.Count === 1}"></div> 
<!-- /ko --> 
+0

你至少應該用''history''替換雙引號。另外我相信你不能在一個綁定中將'foreach'和'if'結合起來。 –

回答

0

我無法找到一個乾淨的方式做一個聲明,但也許你可以將if邏輯移入模板本身?

<ul data-bind="template: {name:'template', foreach: items}"> 

</ul> 
<script type="text/html" id="template"> 
    <!-- ko if: show --> 
    <li> 
    <span data-bind="text: name"></span> 
    </li> 
    <!-- /ko --> 
</script> 

看到完整的例子在這裏:http://jsfiddle.net/nheu9uvq/1/

+0

與此問題是,我想能夠顯示不同版本的列表(基於元素的屬性)。這個解決方案將要求我爲每個不同版本的列表創建多個幾乎相同的模板(我要顯示不同的「if」綁定)。 –

+0

您可以傳遞要檢查的字段作爲要在模板中檢查的參數 – dfperry

0

使用computed基於其Count成員來過濾history。或者是一個基於任意成員進行過濾的函數。