ExtJs:从Store初始化变量

时间:2012-05-04 09:11:13

标签: extjs4

您好我正在使用ExtHs 4。

我有一个需要从商店初始化的全局变量。

var cp=0;

Ext.onReady(function(){
Ext.define('Init', {
            singleton: true,
            cp: 0
        });

Ext.define('loggedUserList', {
                extend: 'Ext.data.Model',
                fields: ['id','name']
            });

            loggedUser = Ext.create('Ext.data.Store', {
                model: 'loggedUserList',
                autoLoad: true,
                proxy: {
                    type: 'ajax',
                    url : url+'/lochweb/loch/users/getLoggedUser',
                    reader: {
                     type: 'json',
                        root: 'provider'
                    }                   
                },
                listeners: {
                    load:function(loggedUser){
                        Init.cp = loggedUser.getAt(0).data.id;

                    }
                }

            }); 
});

我在另一个网址中使用cp的值如下,

Ext.define('vocbList', {
                extend: 'Ext.data.Model',
                fields: [
                    { name: 'id', mapping: 'id' },
                    { name: 'code', mapping: 'code' },
                    { name: 'loinc', mapping: 'loinc.loincNumber' }
                ]
            });     

            var vocabulary = Ext.create('Ext.data.Store', {             
                model: 'vocbList',
                autoLoad: true,
                proxy: {
                    type: 'ajax',                   
                    url : url+'/lochweb/loch/vocabulary/getVocabularyByProvider?providerId='+Init.cp,                   
                    reader:  {
                        type: 'json',
                        root: 'Vocabulary'
                    }
                }
            });

但它的值仍为0.如何分配其值存储形式,以便可以将其重用于其他用途。

由于

2 个答案:

答案 0 :(得分:3)

您需要的是回调。

正在以异步方式进行存储调用,以便在商店从数据库获取数据时浏览器不会冻结。

me.vocabulary.load({
    scope: this,
    callback: function (records, operation, success) {
        //here the store has been loaded so records are not empty
    }

});

答案 1 :(得分:1)

Ext.onReady中,定义一个像这样的全局类:

Ext.define('Init', {
    singleton: true,

    cp: 0
});

然后您可以在任何地方获取或设置 cp

Init.cp = 'some';
var myCp = Init.cp;