【发布时间】:2013-05-14 15:27:31
【问题描述】:
我正在使用 RequireJS 和文本插件在 Backbone Layout Manager 中动态加载 Handlebar 模板。但是在页面加载时,所有模板都会被下载而不是指定的模板。
在下面显示的情况下,当我只想渲染页脚时,所有文件(header、modal)都会被获取,而不仅仅是footer.tpl。
templateLoader.js
define(function (require) {
var Handlebars = require('handlebars');
var getTemplateFile = function (templateName) {
var tmpl = null;
switch (templateName) {
case 'header':
tmpl = require('text!../html/templates/header.tpl');
break;
case 'footer':
tmpl = require('text!../html/templates/footer.tpl');
break;
case 'modal':
tmpl = require('text!../html/templates/modal.tpl');
break;
}
return tmpl;
};
var _compiled = function (tpl, context) {
var compiled = Handlebars.compile(tpl);
return context ? compiled(context) : compiled;
};
return {
getTemplate: function (templateName, model) {
return _compiled(getTemplateFile(templateName), model);
}
}
});
MyView.js - 布局管理器
App.Views.StoreFooter = Backbone.Layout.extend({
beforeRender: function () {
this.$el.html(Templates.getTemplate('footer'));
}
});
当我检查在 Chrome 中下载的资源时,我看到 modal.tpl、header.tpl 根据上面的代码不应该存在。
【问题讨论】:
标签: backbone.js requirejs handlebars.js