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