我使用kendo ui grid,它允许模板用于渲染行。它使用KO模板引擎,它希望模板在标签中,但是我想要外化模板并使用Durandal Compose插件......任何想法如何轻松地挂钩?
答案 0 :(得分:0)
问题是异步/外部加载模板。这是通过durandal的正常视图的组合绑定来完成的。 kendo模板不支持此功能。我现在的解决方案是通过compose绑定加载模板,让kendo网格使用它。事实上我正在使用kendo knockout,它支持kendo网格中的淘汰模板。所以我不必在html中编写javascript(rowTemplate:kendo.template($(“#rowTemplate”)。html()))。
唯一的问题是,如果我通过另一个模板加载网格,行绑定的组合不能在同一个模板中。它应该像
<html>
<div data-bind="compose:{view:rowTemplateFromServer}"></div>
<div data-bind="compose:{view:templateWithKendoGridBindinh}"></div>
</html>
这不适合维护或我的下一代开发....我想我必须延长淘汰剑道使用durandal compose绑定。 (knockoutkendo确实支持外部模板,但它不能在durandal或jquery 9下工作)
修正:
我已经修改了KoExternalTemplate库中的ExternalTemplateSource.js以使用Durandal的viewLocator而不是使用infuser,现在我可以很好地使用kendo网格而没有任何问题(如上所述)。 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;
});
}