0

私はextjs 4.2で作業しており、ある場所で次のようにストアオブジェクトをロードしています:

var  userDetailStore = Ext.create('Ext.data.Store', {
    model : 'Person.DetailsModel',
    autoLoad : true,

    proxy : {
        type : 'ajax',
        method : 'POST',
        url : 'getValueAction.action',
        reader : {
            type : 'json',
            root : 'details'
        },
        writer : {
            type : 'json',
            root : 'details'
        }
    },
    fields : ['id','loginName','referenceId' ,'name']
});//Here I load the store which will definitely contain a list of values.

次の行で、このようにストア オブジェクトから最初の値の referenceId を取得したい

var empId =  userDetailStore.getAt(0).get('referenceId')

そして、今までストアオブジェクト userDetailStore の getCount() が私にゼロを与えていたので、私はエラーを受け取っています。referenceId を取得している行の前で、コードは正常に動作します。行userDetailStore.getCount()が正確な値を示しています。

したがって、ストアをロードしてからストアを使用するまでの間に何らかの遅延が必要だと思いますが、アラートを表示したくありません.alertステートメントの代わりにsleep()メソッドを使用しました.しかし、それもそうではありません(ところで、 sleep()を実行してブラウザをフリーズしたくありません)

ストアのロード中に何か間違ったことをしていますか?ストアが完全にロードされた後にストアを使用するためにコードを実行する一般的な方法はありますか?

誰かここで私を助けてください...

よろしく : 開発

4

3 に答える 3

1

ロード イベントで使用して、完全にロードされた後のカウントを取得します。

userDetailStore.on('load', function(){
                alert("Fully loaded");
            });
于 2013-05-22T10:06:52.530 に答える
0

ここで autoload をfalseに設定すると、いくつかのアクションでload()を使用してストアをロードできます。

store.load({
    callback: function(records, operation, success) {
        // do something after the load finishes
    },
    scope: this
});
于 2013-05-22T10:10:24.070 に答える