|
我一直在尝试获取我的Ajax请求以保证加载的模板有响应。
基本上,如果我运行代码以返回延迟的对象,则在拥有模板对象之前将调用$ .then()。这仅在第一次运行时发生。
我要把这根头发撕掉!
我的ajax电话:
var ajax = {
getTemplate: (function (id) {
///
/// This method when used with $.Deferred fetches a html string
containing the template appliciable
/// to the the supplied id.
/// The ajax request object is cached upon the first request and is
/// returned by the cache
/// upon each subsequent request.
///
///
/// The id that matches the filename to request the template object
/// from.
///
///
/// A superset of the XMLHTTPRequest object that impliments the
/// promise interface.
///
var cache = {}; // private cache
// Gets assigned to getTemplate.
return function (id) {
var url = \"/templates/\" + id + \".tpl\";
return cache[id]|| $.ajax({
url: url,
dataType: \"html\",
success: function (data) {
//ajax.getTemplate(id, data);
cache[id] = data;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
log(\"template request \" + id,
XMLHttpRequest,
textStatus,
errorThrown);
}
});
};
} ())
};
我在这样的方法中调用此方法:
$.when(ajax.getTemplate(\"tooltip-attributes\")()).then(function (template) {
if (template) {
// Do my template stuff here.
}
});