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;

                    }
                }

            }); 
});

次のように、別の URL で 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 に答える