我正在使用Knockout和Knockout-REST(它执行映射并使所有对象都可观察):
<script> var regosViewModel = new RegosViewModel();</script>
<span data-bind="text: regos().list()[0].rid()"></span>
<table class="table table-striped">
<thead><th>rid</th></thead>
<div data-bind="foreach: regos().list()">
<tr><td data-bind="text: rid()"></td></tr>
<script>ko.applyBindings(regosViewModel);</script>
跨度返回数字1,但尝试在下面的foreach循环中执行相同操作会导致“错误:无法解析绑定。 消息:ReferenceError:找不到变量:rid; 绑定值:text:rid()“。
任何人都可以解释原因吗?值得注意的是,text:$ index也有相同的绑定错误。
答案 0 :(得分:2)
对table
元素进行数据绑定时,您必须确保它生成有效的html。 table
无法直接持有div
。试试这个:
<table class="table table-striped">
<thead>
<tr>
<th>rid</th>
</tr>
</thead>
<tbody data-bind="foreach: regos().list()">
<tr>
<td data-bind="text: rid()"></td>
</tr>
</tbody>
</table>
查看此示例,该示例显示无效的表格标记不会呈现:
ko.applyBindings({ arr: [{label: "label 1"}, {label: "label 2"}] });
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<h3>Valid table:</h3>
<table>
<tbody data-bind="foreach: arr">
<tr>
<td data-bind="text: label"></td>
</tr>
</tbody>
</table>
<h3>Invalid table</h3>
<table>
<div data-bind="foreach: arr">
<tr>
<td data-bind="text: label"></td>
</tr>
</div>
</table>
&#13;