0

嗨,我正在使用 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。如何分配它的值形式存储,以便它可以被重用于其他目的。

谢谢

4

2 回答 2

3

你需要的是一个回调。

存储调用是异步完成的,因此在存储从数据库获取数据时浏览器不会冻结。

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

});
于 2012-11-12T20:47:58.263 回答
1

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

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

    cp: 0
});

然后你可以在任何你想要的地方获取或设置cp :

Init.cp = 'some';
var myCp = Init.cp;
于 2012-05-04T10:16:42.370 回答