Knockout.js 如何将Durandal合成集成到敲除模板引擎中

Knockout.js 如何将Durandal合成集成到敲除模板引擎中,knockout.js,kendo-ui,durandal,Knockout.js,Kendo Ui,Durandal,我使用剑道ui网格,它允许使用模板渲染行。它使用KO模板引擎,该引擎期望模板位于标记中,但我想将模板外部化并使用Durandal Compose插件。。。知道如何轻松地钩住它吗?问题是异步/外部加载模板。这是由durandal的用于普通视图的compose绑定完成的。剑道模板不支持此操作。我现在的解决方案是通过组合绑定加载模板,并让剑道网格使用它。事实上,我正在使用剑道击倒,它支持剑道网格中的击倒模板。所以我不必用html编写javascript(rowTemplate:kendo.templa

我使用剑道ui网格,它允许使用模板渲染行。它使用KO模板引擎,该引擎期望模板位于标记中,但我想将模板外部化并使用Durandal Compose插件。。。知道如何轻松地钩住它吗?

问题是异步/外部加载模板。这是由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>

剑道绑定模型的本地方式与击倒的方式非常相似,但并不相同。这是两种完全不同的MVVM实现。然而,Durandal是建立在KO之上的。这在另一篇文章中得到了很好的回答:我修改了KoExternalTemplate库中的ExternalTemplateSource.js,使用Durandal的viewLocator而不是infuser,现在我可以很好地使用剑道网格,没有任何问题(如上所述)。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;
  });
}