【发布时间】:2014-08-10 22:13:54
【问题描述】:
我正在尝试编写一个函数,该函数将为我提供一个已编译的车把模板(我的所有模板都在单独的文件中),使用 ajax 调用来获取模板并编译它以供使用,但我需要使用一个 Promise所以我可以实际使用它。
function getTemplate(name){
$.get('/'+name+'.hbs').success(function(src){
var template = Handlebars.compile(src);
//can't return the template here.
});
}
我如何使用 Promise 做到这一点,以便我可以执行以下操作:
$("a").click(function(e){
getTemplate('form').done(function(template){
$("body").append(template({
name: "My Name"
})
);
});
});
【问题讨论】:
-
@PedroFerreira
async:false已被弃用,这是一个糟糕的解决方案 -
@charlietfl 是的,我同意。但在特定情况下,作为一种选择,它可能仍然很有趣。
-
@PedroFerreira 有很多方法可以避免使用它。请注意,您提供的链接已有 5 年历史
-
@charlietfl 我不提倡使用
async: false。我只是简单地提到它与这个讨论和一个可能的(虽然通常很糟糕,我同意)解决方案有关。我并不是建议 OP 使用它,否则我会将其发布为答案。
标签: jquery handlebars.js promise