Ext.Ajax.request 中的 javascript 范围问题

标签 javascript extjs scope extjs4

我有这个类,它自动从服务器生成 JSON 存储。商店是动态创建的,并且可以在 Firebug 的 DOM 中查看。 我认为我有一些范围问题。当我想在 Ext.Ajax.request 的回调函数“AdminSettings”存储中 console.log(Ext.getStore('AdminSettings')) (其中 AdminSettings 是创建的存储之一)返回,但如果我将 console.log(Ext.getStore('AdminSettings')) 放在回调函数之外的任何地方,我会在 firebug 中收到未定义的消息,并且我的商店未实例化。 请参阅代码注释以查看其实际效果。

Ext.Ajax.request({
url : './account/getadminstores',
callback : function(options, success, response) {
var json = Ext.decode(response.responseText);
var adminStores = new Array();
// setup and intitialize on the fly stores
for ( var key1 in json) {
var storeFields = new Array();
for ( var key2 in json[key1]) {// if (i==1){break;}
for ( var key3 in json[key1][key2]) {
storeFields.push(key3);}
break;};
Ext.define('MA.store.' + key1, {
extend : 'Ext.data.Store',
fields : storeFields,
storeId : key1,
data : json[key1]
});
Ext.create('MA.store.'+key1);};
console.log(Ext.getStore('AdminSettings'));
//returns MA.store.AdminSettings in firebug and everything is fine 
                }
            });//eof Ext.Ajax.request
            console.log(Ext.getStore('AdminSettings'));
//returns undefined which is strange

最佳答案

Ext.Ajax.request 是异步的。您的最终 console.log 调用不会返回任何内容,因为在执行该请求时,请求尚未完成。任何依赖于请求回调结果的代码也需要由回调执行。

关于Ext.Ajax.request 中的 javascript 范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7458172/

相关文章:

function - 支持词法范围 ScriptBlock 参数(例如Where-Object)

javascript - Ember.js - 设置启用仅 HTTP cookie?

javascript - Express.js 路由 404

forms - ExtJS 为什么 form.getValues() 只返回 "1"而不是 "0"用于复选框状态?

extjs - xtype 而不是类定义中的别名

我的 createMinHeightBST 函数中的 JavaScript 函数声明范围

javascript - Angular.js 在指令中更新 SVG 模板

javascript - 我可以通过什么方式混合 jQuery 和 vanilla JavaScript

javascript - ExtJS 列中的排序会从模板列中删除节点

c# - 明确的本地范围——有什么真正的好处吗?