gpt4 book ai didi

jquery - 异步加载 Handlebars 模板

转载 作者:行者123 更新时间:2023-12-03 22:35:19 24 4
gpt4 key购买 nike

我正在尝试编写一个函数,该函数将为我提供一个已编译的 Handlebars 模板(我将所有模板都放在单独的文件中),使用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"
})
);
});
});

最佳答案

Chovy,我看到您已经接受了答案,但您可能有兴趣知道 getTemplate 可以通过链接 .then() 而不是 .success (),几乎像问题中那样写:

function getTemplate(name) {
return $.get('/'+name+'.hbs').then(function(src) {
return Handlebars.compile(src);
});
}

或者,采用 charlietfl 的想法传入数据并返回一个完全组合的片段的 Promise :

function getTemplate(name, data) {
return $.get('/'+name+'.hbs').then(function(src) {
return Handlebars.compile(src)(data);
});
}

nett 效果与 charlietfl 版本的 getTemplate 相同,但 .then() 使得无需显式创建 Deferred。因此代码更加紧凑。

关于jquery - 异步加载 Handlebars 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com