Получить массив JSON из Ext.data.Store снаружи? - PullRequest
2 голосов
/ 17 ноября 2011

Как я могу получить массив JSON из Ext.data.Store вне функции? Код:

var store = new Ext.data.Store({
                model: 'nested' + type,
                proxy: {
                    type: 'ajax',
                    url: '/Grid/GetDetailed?InvoiceId=' + $(row).attr('id'),
                    reader: {
                        type: 'json',
                        root: 'items',
                        totalProperty: 'totalCount'
                    }
                }
            });
            store.load();

И я хочу использовать что-то вроде этого:

store.getAt(0);

но это не определено. кто-то сказал, что это потому что Аякс асинхронный.

Ответы [ 3 ]

6 голосов
/ 17 ноября 2011

Если вы используете store.getAt (0) сразу после вызова store.load (), тогда да, проблема в том, что загрузка асинхронная, поэтому вы должны использовать метод обратного вызова для ее исправления.

store.load({
    scope   : this,
    callback: function(records, operation, success) {
        //here the store has been loaded so you can use what functions you like
        store.getAt(0);
    }
});
0 голосов
/ 29 марта 2013

Вы также можете заставить его работать, выполнив следующие действия:

//This function will be called only after the store has been loaded successfully.
store.on('load',function(this, records, successful, eOpts){
     store.getAt(0);
}, this);
0 голосов
/ 17 ноября 2011

Используйте Ext.create вместо ключевого слова new при создании магазина и определите storeId для магазина.Затем вы можете использовать метод Ext.getStore () для извлечения хранилища.

...