我正在使用 knockoutjs v1.2.0 和 Jquery 模板。我会使用 data-bind: foreach 等,但我发现它只出现在 knockoutjs 的 v2.0.0 中。所以我将不得不使用 jquery 模板。
我的 aspx 文件有以下代码:
....
....
....
<tbody data-bind="template: {name: 'tasksTemplate', foreach: form.model.tasks}">
</tbody>
</table>
</td>
</tr>
</table>
</div>
</div>
<script id="tasksTemplate" type="text/html">
<tr>
<td>
<input id="Selected" type="checkbox" data-bind="checked: ${isSelected}" />
</td>
<td>
<select id="CableCode" data-bind="options: CableCodes, value: ${CableCodeId}, optionsText: 'Code', optionsValue: 'Id'" style="width: 95%"></select>
</td>
<td>
<input type="text" />
</td>
<td>
<input type="text"/>
</td>
<td>
<select style="width: 95%"></select>
</td>
<td>
<input type="text" class="datePicker" />
</td>
<td>
<input type="text" class="datePicker" disabled="disabled" />
</td>
<td>
<input type="text" disabled="disabled" />
</td>
</tr>
</script>
</asp:Content>
并且我保存表单对象(包含所有函数和可观察对象等)的 js 文件具有以下代码:
....
....
self.tasks = ko.observableArray([]);
self.addTask = function () {
self.tasks.push({'isSelected': '', 'CableCodeId': '' });
};
....
....
但是,即使当我加载页面时,当我尝试使用 addTask 函数向我的表中添加一行时,我也没有收到任何 js 错误,但我得到了一个错误:预期的标识符、字符串或数字。
我尝试从 isSelected 和 CableCodeId 中去掉单引号,但仍然没有。
我还尝试关闭第二个数据绑定(关于 CableCode 的那个),所以我只能检查第一个(isSelected)但我仍然得到同样的错误。
我也在使用 IE 8。