我遇到了同樣的問題。我在網上找到了一個例子,我修改它以使它適用於我正在做的事情(他們正在拉取html文件,我想拉ASP.net頁面),但我無法再在線找到該例子以便給予該人員信貸。不過,這裏是我修改後的代碼。
首先是模板裝載機:
if (!window.JackTemplateLoader) {
function JackTemplateLoader(params) {
if (typeof params === 'undefined') params = {};
var TEMPLATE_DIR = params.dir || '';
var file_cache = {};
function get_filename(name) {
if (name.indexOf('-') > -1) name = name.substring(0, name.indexOf('-'));
return TEMPLATE_DIR + name;
}
this.get_template = function (name) {
var template;
var file = get_filename(name);
var file_content;
var result;
if (!(file_content = file_cache[name])) {
$.ajax({
url: file,
async: false,
success: function (data) {
file_content = data;
file_cache[name] = file_content;
}
});
}
return file_content;
}
this.clear_cache = function() {
template_cache = {};
};
}
}
然後我的木偶應用裏面,我創建了一個比寫木偶模板加載器的addInitilizer。
app.addInitializer(function (options) {
app.JackTemplateLoader = new JackTemplateLoader({ dir: "/api/ApplicationScreens/", ext: '' });
Backbone.Marionette.TemplateCache.prototype.loadTemplate = function (name) {
if (name == undefined) {
return "";
} else {
var template = app.JackTemplateLoader.get_template(name);
return template;
}
};
最好的部分是模板加載器將緩存我的模板,所以他們只加載一次。我正在對此代碼進行更改,以發送一個標誌來指示是否要緩存模板。
謝謝,看起來很有希望:)還發現[下面的文章](http://johndavidmathis.wordpress.com/2012/09/13/preloading-backbone-marionette-templates-2/)。 –