kero
Version:
54 lines (34 loc) • 1.74 kB
Markdown
# 数据模型绑定语法
数据模型(dataTabe)的绑定是基于knockoutjs的,数据模型做为被绑定的model存在。所以,knockoutjs的绑定语法中都可以使用数据模型。
## 当前行字段值的绑定
<label data-bind="text: dataTable.ref('name')"></label>
<input type="text" data-bind="value: dataTable.ref('name')"></input>
dataTable的`ref`方法会返回一个knockout的纯计算监控(pureComputed)。通过这个纯计算监控来实现数据的双向绑定。
常见的触发监控的条件:
+ 当前行改变时(`dataTable.setRowSelect(index)`)
+ 修改当前行数据时(`dataTable.setValue('name','tom')`)
+ 数据载入时(`dataTable.setSimpleData(json)`)
+ 在页面DOM上修改字段值时
## 所有行字段值的绑定
因为所有的行在dataTable中是以数组形式存在,所以要通过knockout的foreach语法来遍历行数组,在foreach中做行(Row)的字段绑定。
<table id="table1" class="u-table">
<thead>
<tr>
<th>公司</th>
<th>部门</th>
<th>姓名</th>
</tr>
</thead>
<tbody data-bind="foreach:{data:dataTable.rows(), as: 'row'}">
<tr>
<td data-bind="text:row.ref('enterprise')"></td>
<td data-bind="text: row.ref('depart')"></td>
<td data-bind="text: row.ref('name')"></td>
</tr>
</tbody>
</table>
row.ref方法同样返回一个knockout的纯计算监控。实现数据与DOM的双向绑定。
常见的触发监控的条件:
+ 数据时(`row.setValue('name','tom')`)
+ 数据载入时(`row.setSimpleData(json)`)
+ 在页面DOM上修改字段值时