ノックアウト剣道パッケージのおかげで、ノックアウト付きの剣道グリッドを使用しています。
グリッドとグリッドの構成を次のように定義しています。
<div id="gridResult" data-bind="kendoGrid: gridOptions"> </div>
テンプレート:
<script id="rowTmpl" type="text/html" >
<tr >
<td data-bind="text: PermitNumber"></td>
<td data-bind="text: WorkTypeDescription"></td>
....
</tr>
</script>
ビューモデルのコード:
// search result
this.SearchResult = ko.observableArray();
this.gridOptions = {
data: self.SearchResult,
pageable: { pageSize: 20 },
useKOTemplates: true,
rowTemplate: "rowTmpl"
}
データソースにデータを入力すると、すべてがうまく機能しています。
ただし、アプリ全体のさまざまなテンプレートでうまく機能する Knockout.js-External-Template-Engine を使用していますが、剣道グリッド行に使用されるテンプレートでは機能しません。
私は2つの方法でセットアップしようとしました:
gridOptions.rowTemplate で外部テンプレートに名前を付けます (ただし、データ オブジェクトへの参照を外部テンプレート エンジンに渡す方法がわからないため、これをあきらめます)
gridOptions.rowTemplate が html ファイル内の「疑似テンプレート」を指すようにし、その内部で外部テンプレートへの参照を定義し、以下のように $data をデータ コンテキストとして渡します。
<script id="rowTmpl" type="text/html" > <!-- ko template: {name: 'gridRow', data: $data}--> <!-- /ko --> </script>
外部テンプレート gridRow.tmpl.html は次のとおりです。
<tr >
<td data-bind="text: PermitNumber"></td>
<td data-bind="text: WorkTypeDescription"></td>
....
</tr>
ただし、機能しません。ページの読み込み中にネットワーク リクエストを確認すると、剣道行テンプレートを読み込むリクエストがありません。
それを機能させる方法はありますか?
EDIT 行テンプレートを外部ファイルに移動すると、ページ内でrowTemplate inlineを使用しても問題なく動作する場合でも、次のjavascriptエラーが発生することに気付きました。
ReferenceError: gridOptions が定義されていません