如果你看一下下面的函数,在第 11 行,它alert(template);
。它打印undefined
. If I alert(template);
在ajax成功回调中,它打印没有问题。由于模板是在函数顶部定义的,因此这不应该在整个函数中是全局的吗?有人可以帮我吗?
function load_template(path, data, callback){
var template;
$.ajax({
url: path,
success: function(uncompiled_template){
template = Handlebars.compile(uncompiled_template);
}
});
alert(template);
if(callback){
callback(template, data);
}else{
return template(data);
}
}
不,这不是范围问题,而是时间问题。
AJAX 调用是异步的,因此成功回调会在响应到达后运行。当您尝试使用该变量时,该变量尚未设置。
您无法从函数返回值,因为在退出函数之前成功回调永远不会运行。始终使用发送到函数的回调:
function load_template(path, data, callback){
$.ajax({
url: path,
success: function(uncompiled_template){
var template = Handlebars.compile(uncompiled_template);
callback(template, data);
}
});
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)