2013-12-15 109 views
0

由于淘汰赛kendo包,我使用kendo网格与淘汰赛。使用kendo网格与淘汰赛kendo和淘汰赛外部模板引擎

我有网格,网格的配置定义如下:

<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,它可以在整个应用程序中使用各种模板,但不适用于用于kendo网格行的模板。

我试图建立它在两路:

  1. 名gridOptions.rowTemplate外部模板(但我不知道我怎么能传递到外部的模板引擎引用的数据对象,所以给死了这条)

  2. 让gridOptions.rowTemplate点在HTML文件中的“伪模板”,并在其内部定义参考外部模板,传递$数据如下数据上下文:

<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> 

但是,它不工作 - 检查页面加载过程中网络请求时,没有加载剑道要求行模板。

任何想法如何使它工作?


编辑 我只注意到,当我移动的行模板外部文件,我得到下面的JavaScript错误,即使它的工作原理确定在页面上,使用内嵌rowTemplate。

的ReferenceError:gridOptions没有定义

回答

0

其实我弄清楚如何使用它。 该解决方案如下所示:

  • 配置浸泡器采用下模板的公共位置模板路径和子文件夹匹配的页面名称不带扩展名:
infuser.defaults.templateSuffix = ".tmpl.html"; 
infuser.defaults.templateUrlRoot = "/templates/modules"; 
infuser.defaults.templateUrl = infuser.defaults.templateUrlRoot + '/' + 
    window.location.pathname.replace(/\.[^\.\/]+$/, "").substr(1); 
  • 设置gridOptions中的rowTemplate到另一个元素的页面中不存在的ID

this.gridOptions = { rowTemplate = 'myTemplate' }

  • 创建模板所查找的文件夹中的文件,并将其命名为rowTemplate模板名称设置和那里只是定义格兰实际的模板标记,没有附上...标签 在我的情况下,模板文件是/template/modules/mypage1/myTemplate.tmpl.html

  • 非常重要!!! 确保您的页面上没有ID ='myTemplate'的任何元素。 如果你这样做,模板引擎会认为元素的模板,并会尝试使用它,而不是加载实际的模板文件

就是这样。

我最初面临的问题是我有页面上的另一个元素与模板名称相同的名称。这就是为什么模板引擎没有拿起实际的模板文件。