显示默认行KnockOut.js
Displaying default row KnockOut.js
我知道我可以在knockout中使用注释foreach
向列表添加条件。但是,如果 observableArray
为空,我想添加一个默认行到表。
目前我这样做:
<table>
<!-- ko foreach: members -->
<tr>
<td data-bind="text: Id"></td>
<td data-bind="text: FirstName"></td>
<td data-bind="text: LastName"></td>
</tr>
<!-- /ko -->
<tr data-bind="if: MemberCount == 0">
<td colspan="3">
No members have been added yet
</td>
</tr>
</table>
有更优雅的方式吗?
我同意0lukasz0的评论,并将在视图模型上执行computed property:
model.hasNoMembers = ko.computed(function(){
return model.members().length === 0;
});
Html: <table>
<!-- ko foreach: members -->
<tr>
<td data-bind="text: Id"></td>
<td data-bind="text: FirstName"></td>
<td data-bind="text: LastName"></td>
</tr>
<!-- /ko -->
<tr data-bind="if: hasNoMembers">
<td colspan="3">
No members have been added yet
</td>
</tr>
</table>
这样就不需要任何条件注释,只使用data-bind:
<tbody data-bind="foreach: members">
<tr>
<td data-bind="text: Id"></td>
<td data-bind="text: FirstName"></td>
<td data-bind="text: LastName"></td>
</tr>
</tbody>
<tfoot data-bind="if: (memberCount == 0)">
<tr>
<td colspan="3">
No members have been added yet
</td>
</tr>
</tfoot>
这个呢:
<table>
<tbody data-bind="foreach: members">
<tr>
<td data-bind="text: Id"></td>
<td data-bind="text: FirstName"></td>
<td data-bind="text: LastName"></td>
</tr>
</tbody>
<tbody data-bind="if: members().length == 0">
<tr>
<td colspan="3">No members have been added yet</td>
</tr>
</tbody>
</table>
Proof on jsFiddle: http://jsfiddle.net/fkQQ2/
相关文章:
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- Knockout.JS标签在foreach内部不起作用
- 使用Knockout JS从下拉框中向observalearray添加项
- 使用knockout.js将数组绑定到视图模型
- 如何使用Jasmine测试Knockout.js点击绑定
- 类似于Prism的Knockout js框架
- Knockout JS和简单的函数
- Knockout.js中带有if:子句的嵌套循环
- Knockout JS中具有下拉列表的数组
- Knockout.JS,模板都是通过表单不添加数据的
- 在Knockout JS中搜索从DB加载数据的项目
- 使用Knockout.js动态更改facebook数据
- $root在knockout.js中解析为空白页
- knockout.js中的绑定多下拉列表
- 在Knockout js中创建一个包含多行的表,而不需要推送
- 如何基于Knockout js模型设计控件样式
- 从对象内部调用knockout.js ko.applyBindings()
- Breeze.js + Knockout.js Tutorials
- 不能动态加载jquery, bootstrap, D3.js, knockout.js的CDN