Я использую сетку кендо с нокаутом, благодаря пакету нокаут-кендо.
У меня есть сетка и конфигурация сетки, как показано ниже:
<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, который отлично работает с различными шаблонами в приложении, но не работает с шаблоном, используемым для строки сетки кендо.
Пробовал настроить двумя способами:
назовите внешний шаблон в 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 Я только что заметил, что когда я перемещаю шаблон строки во внешний файл, я получаю следующую ошибку javascript, даже если он работает нормально, используя rowTemplate, встроенный в страницу.
ReferenceError: gridOptions не определен