我使用敲除模板将可观察数组绑定到视图。我有一个对象数组,但我想只显示满足某个条件的对象。无论如何使用敲除模板绑定来做到这一点?我目前正在使用第二个解决方案(有效),因为第一个导致错误,但我觉得可能有更简洁的方法来做到这一点。
所需解决方案(未定义产品的错误):
<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 :(得分:0)
I can't find a clean way to do it in one statement, but perhaps you could move the if
logic into the template itself?
<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>
see the full example here: http://jsfiddle.net/nheu9uvq/1/
答案 1 :(得分:0)
使用computed
根据history
成员过滤Count
。或者是基于任意成员过滤的函数。
答案 2 :(得分:0)
模板绑定本身支持if
参数。
它在文档中。 http://knockoutjs.com/documentation/template-binding.html