我正在开发一个应用程序,Ember 1.0.rc3
并且我正在通过请求从后端服务器按需Handlebars
加载我的预编译模板文件。为了能够处理这个问题,我创建了自己的模板管理器,它从服务器中提取模板并将它们存储在.Ajax
Ember.TEMPLATES
现在,这工作得很好,但是为了懒惰,我想知道是否有可能挂钩到Ember
框架内的一些代码并将我的模板管理器作为代理放在前面,这样每次 Ember 做它的时候,它的魔力通过首先访问我的经理来做到这一点?
编辑:
这是一些代码,基本上我的模板管理器只是一个类,正如我所说,它从服务器加载预编译的模板并将它们放入Ember.TEMPLATES
模板缓存中。
fetchTemplate: function (templateName, templateAlias) {
var alias = templateAlias || templateName;
var retString = '';
// check if the template already exists
if (typeof Ember.TEMPLATES[alias] === 'undefined') {
// create the ajax request object
$.ajax({
type: 'GET',
data: { templateName: templateName },
url: 'template/request',
success: function(data) {
if (typeof data.template === 'string' && data.template !== '') {
var escapedTemplateString =
data.template.replace(/\\n/g, "\\n").replace(/\\r/g, "\\r").replace(/\\t/g, "\\t");
escapedTemplateString = escapedTemplateString.replace(/\s+/g, " ");
// load the template into the Ember.TEMPLATES template cache
Ember.TEMPLATES[alias] = Ember.Handlebars.template(eval("(" + escapedTemplateString + ")"));
retString = alias;
} else {
retString = '';
}
}
});
} else {
retString = alias;
}
return retString;
},
releaseCache: function() {
Ember.TEMPLATES = {};
}