Циклическая загрузка сетки в Item, который используется this.getStore ().Загрузить () - PullRequest
0 голосов
/ 01 октября 2018

Почему происходит циклическая загрузка сетки, когда я использую this.getStore (). IsLoaded ()?

И я также заметил, что каждое значение index_record во мне равно -1, хотя я уверен, что store_caсодержит запись с идентификатором == 1

    ...
{
            xtype: 'gridcolumn',
            text: 'Контрагент1',
            dataIndex: 'contragent',
            flex: 1,
            editor: combo,
            editor: {
                xtype: 'combobox',
                displayField:'name',
                valueField:'id',
                queryMode:'remote',
                store: Ext.data.StoreManager.get('ContrAgents'),

            },

            renderer: function(value, metaData, record, rowIndex, colIndex, store, view){
                if(this.getStore().isLoaded()){
                    store_ca = Ext.data.StoreManager.get('ContrAgents');                        
                    index_record = store_ca.findExact('id', 1);
                    console.log(index_record)
                }
                if(index_record != -1){
                    rs = store_ca.getAt(index_record).data;
                    return rs.name;
                }
            }
        },
    ...

В store_ca находится магазин "ContrAgents".Это мой магазин "ContrAgents":

var urlRoot = 'data?model=Contragents&method=';
Ext.define('BookApp.store.ContrAgents', {
    extend: 'Ext.data.Store',
    model: 'BookApp.model.ContrAgents',
    autoLoad: true,
    storeId: 'ContrAgents',
    proxy: {

            type: 'ajax',
            noCache: false,
            actionMethods: {update: 'GET',create: 'GET',destroy: 'GET'},
            api: {
                create:     urlRoot + 'Create',
                read:       urlRoot + 'Read',
                update:     urlRoot + 'Update',
                destroy:    urlRoot + 'Destroy'
            },
            reader: {

                type: 'json',
                metaProperty: 'meta',
                rootProperty: 'data',
                idProperty: 'id',
                totalProperty: 'meta.total',
                successProperty: 'meta.success'
            },
            writer: {
                type: 'json',
                encode: true,
                writeAllFields: true,
                rootProperty: 'data',
                allowSingle: false

            }
        }
});

1 Ответ

0 голосов
/ 02 октября 2018

Вам нужно использовать this.getStore().isLoad() для проверки загрузки магазина.Если this.getStore.load() перезагрузит магазин.Если это асинхронная загрузка, то ваш поиск завершится неудачно, поскольку хранилище, возможно, не загрузилось в этой точке выполнения.

...
{
        xtype: 'gridcolumn',
        text: 'Contragents',
        dataIndex: 'contragent',
        editor: {
                xtype: 'combobox',
                allowBlank: false,
                displayField: 'name',
                valueField: 'id',
                queryMode: 'remote',
                store: Ext.data.StoreManager.lookup('ContrAgents')
                },
        renderer: function(value, metaData, record, rowIndex, colIndex, store, view){                
                if(this.getStore().isLoaded()){
                    store_ca = Ext.data.StoreManager.get('ContrAgents');
                    //'ContrAgents' should be 'storeId' for the store 
                    // you are refering to and should be listed in 
                    //stores[] array of app.js 
                    index_record = store_ca.findExact('id', 1);

                }
                if(index_record != -1){
                    rs = store_ca.getAt(index_record).data;
                    return rs.name;
                }
            }
        },
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...