ExtJS.data.store.load在回调之外的空值

时间:2014-06-16 17:21:36

标签: javascript callback extjs4 store

请你帮我看看下面的代码吗?为什么我无法在回调之外获得价值?

任何意见都将不胜感激。

var i = 0;
        var myModulesName = []; 
        me.store.load({callback: function(){
                me.store.data.each(function(records) { 
                        if(records.raw.hasLeaf === true){
                            //Ext.Function.defer(function() {
                                myModulesName[i] = records.raw.name;
                                console.log('this is constructor App.js  inside storeload  '+myModulesName[i]);
                            //}, 100, me);
                            ++i;
                        }
                });

            }
        });
        //empty here.
        console.log('this is constructor outside of load    '+myModulesName);

2 个答案:

答案 0 :(得分:0)

是的,它是空的,它将保持为空,因为store.load()是异步的。请求被发送到服务器并立即继续执行。当服务器返回响应(可能需要几秒钟)时,将执行回调,如果请求成功,则会触发load事件。

答案 1 :(得分:-1)

这段代码位于构造函数中,我有另一个名为init()的函数,它将在构造函数之后触发。以下代码位于我的构造函数的末尾。

    if (Ext.isReady) {
            Ext.Function.defer(me.init, 10, me);
        } else {
            Ext.onReady(me.init, me);
}

我刚把这个部分移到了load()和每个'的末尾。部分,它的工作!我现在能够获得modulesName。