【发布时间】:2016-01-04 13:19:30
【问题描述】:
请参考以下示例代码
var report = {
chartTypes : null,
init: function () {
this.getChartTypes(function(data){
this.chartTypes = data;
});
},
getChartTypes: function(callback) {
$.ajax({
data:'',
url:'',
success:function(response){
chartTypes = JSON.parse(response);
callback(chartTypes);
}
});
},
getToolbar:function() {
this.chartTypes --------------- NULL
}
}
getChartTypes 函数通过 AJAX 加载不同的图表类型。因此我把它作为一个回调函数。数据接收成功。但是当我在 getToolbar 等不同的函数中使用 this.chartTypes 时,它会说 this.chartTypes 是 null。即使我在开始时也进行了相同的初始化。可能是范围问题。请指教。
【问题讨论】:
-
这里已经回答过了:stackoverflow.com/questions/500431/…
-
@NeilMunro 这不是主要是范围问题 - 这是一个异步问题
-
您似乎在 AJAX 成功回调中分配了
chartTypes变量的值。所以在调用读取这个变量的getToolbar函数之前,你应该确保getChartTypes函数已经被调用并且AJAX请求已经成功执行完毕。 -
它既不是作用域也不是异步(尽管可能存在额外的异步问题)。
this.chartTypes根本不引用全局变量chartTypes。 -
@Alnitak — 不过,我们可能看不到这两个函数是如何相互调用的。
标签: javascript scope callback