【发布时间】:2014-09-29 19:07:55
【问题描述】:
我想要做的是将 Marionette 配置为加载外部 Handlebars 模板文件,而不是执行 <script id="templateId" type="text/template">...</script>。
我偶然发现了@Derick Bailey 在External handlebars templates backbone marionette 上的帖子……但显然,它对我不起作用,因为我得到了相同的“回调未定义”,正如其中一位 cmets 所指出的那样。顺便说一句,我正在使用 Marionette 2.2.0...。
这是我想出来的:-
Backbone.Marionette.Renderer.render = function ( templateId, data ) {
console.log( "render() - " + templateId + " " + JSON.stringify( data, null, 4 ) );
var promise = Backbone.Marionette.TemplateCache.get( templateId );
$.when( promise ).done( function ( template ) {
console.log( "render() - promise fulfilled - " + template );
return template( data );
} );
};
Backbone.Marionette.TemplateCache.prototype.loadTemplate = function ( templateId ) {
console.log( "loadTemplate() - " + templateId );
var tmpId = templateId.replace( "#", "" ),
url = "resources/js/templates/" + tmpId + ".html";
var renderer = $.Deferred();
$.get( url, function ( templateHtml ) {
console.log( "loadTemplate() - URL get - " + templateHtml );
renderer.resolve( Handlebars.compile( templateHtml ) );
} );
return renderer.promise();
};
虽然我没有收到任何错误,但我也没有在屏幕上看到任何呈现的模板。
查看 Firebug 控制台,我看到以下内容......
我该如何解决?我花了几个小时试图解决这个问题,但现在我感到很沮丧。
非常感谢。
【问题讨论】:
标签: javascript templates backbone.js marionette