我正在使用 RequireJS 和文本插件在 Backbone Layout Manager 中动态加载 Handlebar 模板。但是在页面加载时,所有模板都会被下载,而不是指定的模板。在下面显示的情况下,当我只想渲染页脚时,所有文件 ( header
, modal
) 都会被获取而不是仅获取footer.tpl
.
模板加载器.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
上面的代码不应该存在。