0

我使用允许模板用于渲染行的 kendo ui 网格。它使用 KO 模板引擎,希望模板在标签中,但是我想将模板外部化并使用 Durandal Compose 插件......知道如何轻松挂钩吗?

4

1 回答 1

0

问题是从外部加载模板异步/。这是通过 durandal 的普通视图的 compose 绑定来完成的。剑道模板不支持这个。我现在的解决方案是通过组合绑定加载模板并让剑道网格使用它。事实上,我正在使用剑道淘汰赛,它支持剑道网格中的淘汰赛模板。所以我不必在 html 中编写 javascript (rowTemplate: kendo.template($("#rowTemplate").html()))。

唯一的问题是,如果我通过另一个模板加载网格,则行绑定的组合不能在同一个模板内。它应该像

<html>
  <div data-bind="compose:{view:rowTemplateFromServer}"></div>
  <div data-bind="compose:{view:templateWithKendoGridBindinh}"></div>
</html>

这不利于维护或我的下一代开发人员......我认为我必须扩展淘汰赛剑道才能使用 durandal 组合绑定。(knockoutkendo 确实支持外部模板,但它不能在 durandal 或 jquery 9 下工作)


固定的:

我已经修改了 KoExternalTemplate 库中的 ExternalTemplateSource.js 以使用 Durandal 的 viewLocator 而不是使用注入器,现在我可以很好地使用剑道网格而没有任何问题(如上所述)。ExternalTemplateSource.js 中的 getTemplate 函数现在如下所示:

getTemplate: function () {
  var self = this;
  viewLocater.locateView(self.templateId).then(function (element) {
    self.data("precompiled", null);
    var t = $(element).html();
    //system.log("got template: "+t );
    self.template(t);
    self.loaded = true;
  });
}
于 2013-04-19T11:03:40.560 回答