ノックアウト js 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 から一重引用符を外してみましたが、まだ何もありません。
また、2 番目のデータ バインド (CableCode に関するもの) をオフにしようとしたので、最初のデータ バインド (isSelected) しか確認できませんが、それでも同じエラーが発生します。
私もIE8を使用しています。