我假设您正在运行 Marionette v0.9,因为您提到了 Marionette.Async 插件。
The Renderer
方法名称中的更改稍有偏差,并且没有任何内容调用您的TemplateCache
不再反对了。
如果您打算使用预编译的 Handlebars 函数,那么您只需执行以下操作:
Backbone.Marionette.Renderer.render = function(template, data){
return template(data);
};
如果您打算使用 TemplateLoader 异步加载模板然后进行编译,您的代码将需要如下所示:
Backbone.Marionette.TemplateCache.prototype.loadTemplate = function (templateId, callback) {
var tmpId = templateId.replace("#", ""),
url = "/app/templates/" + tmpId + ".html";
$.get(url, function (templateHtml) {
compiledTemplate = Handlebars.compile($(templateHtml).html())
callback.call(this, compiledTemplate);
});
};
Backbone.Marionette.Renderer.renderTemplate = function (templateId, data) {
var renderer = $.Deferred();
Backbone.Marionette.TemplateCache.get(templateId, function(template){
var html = template(data);
renderer.resolve(html);
});
return renderer.promise();
};
Renderer负责调用TemplateCache。
旁注:您使用什么文章/博客文章/维基页面/文档来获取代码?我可能错过了一些需要更新的页面。