如果文本未定义,如何绑定文本?例如,名称不可用:
<table id="recordTbl" data-bind="visible: records().length > 0" class="table">
<thead>
<tr>
<th class="col-md-4">ID</th>
<th class="col-md-4">Name</th>
</tr>
</thead>
<tbody data-bind="foreach: records">
<tr>
<td data-bind="text: id"></td>
<td data-bind="text: name"></td>
</tr>
</tbody>
</table>
我收到此错误:
Uncaught ReferenceError: Unable to process binding "text: function (){return name }"
Message: name is not defined
答案 0 :(得分:1)
您可以使用$data
绑定上下文属性,它始终代表当前视图模型通过它访问name
:
<tbody data-bind="foreach: records">
<tr>
<td data-bind="text: id"></td>
<td data-bind="text: $data.name"></td>
</tr>
</tbody>
使用此方法,如果records
中的某个项目没有name
属性,KO将不会抛出异常。
如果没有$data
,则名为name
的标识符未定义。但是,$data.name
始终是一个有效的表达式,如果当前视图模型没有名为undefined
的属性,它只返回name
。