Lou*_*ley 26 javascript knockout.js
如何通过比较来控制foreach忽略某些元素?
我想要的例子是这样的:
<div data-bind="foreach: entry where (entry.number > 10)">
Run Code Online (Sandbox Code Playgroud)
所以,我希望它做的是遍历entry的,但是当电流只执行entry了一个number超过10的值.
这可能吗?
Bjö*_*ser 28
目前这对于knockout.js是不可能的,但这是一个有趣的功能.您应该提交错误报告/联系作者以考虑将来的版本.
方式1:
<div data-bind="foreach: entry">
<div data-bind="if: entry.number > 10"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
方法2:
编写一个自定义过滤方法,为您提供符合条件的元素数组,并在您的条件中使用它foreach.
Jus*_*tMe 18
试试这个:
<div data-bind="foreach: editingItem.columns">
<!-- ko if: Selected-->
<div data-bind="text: Name"></div>
<input type="text"/>
<!-- /ko -->
Run Code Online (Sandbox Code Playgroud)
我认为使用内置的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);
Run Code Online (Sandbox Code Playgroud)
然后您可以像往常一样将数据绑定到filteredEntries
| 归档时间: |
|
| 查看次数: |
20178 次 |
| 最近记录: |