ExtJS6: привязка хранилища к элементам панели

Разрешает ли ExtJS6 привязку хранилища к простым элементам панели, чтобы он извлекал указанные столбцы и отображал их как элемент { xtype: 'panel', id: 'master_list', title: 'MasterList', defaultType: 'button', bind: { магазин: '{зоны}' } }


person ducktyped    schedule 05.01.2017    source источник
comment
Нет, потому что для этого потребуется какая-то функция сопоставления записи → компонента. Было бы что написать для себя.   -  person Evan Trimboli    schedule 05.01.2017


Ответы (2)


Atm в extJS 6 конфигурация элемента на панели не является привязываемым элементом, в основном из-за того, что на панели нет методов getItem() и setItems(). Вы всегда можете переопределить панель и добавить эту функциональность, и это будет выглядеть примерно так:

Ext.define("Ext.panel.StoreButtonPanel", {
    /* extend a panel so you get same base functionality of a panel */
    extend: 'Ext.panel.Panel',
    /* other configs and overrides you might want */


    setStore:function(){
        // function to bind the store to panel
    },

    getStore:function(){
        // function to get store from panel
    }


    setItems: fuunction(){
        var me = this, 
            myStore = me.getStore();

        // loop through store and add items. 
        myStore.each(function(storeItem){
            // create the items that you want from teh store via loop and using 
            // storeItem
            Ext.create('Ext.button.Button', { 
                text: storeItem.get('text'),
                /* other things here if needed */
            })
        });

    },


    init: function(){
        var me = this;

        // call method to create items if a store is found. 
        if(me.getStore()){
            me.setItems();
        }
        me.callParent();
    }
});
person Chad Peruggia    schedule 05.01.2017
comment
Вы будете vonfuse позже при определении сеттера, который не имеет дело с параметрами. Старайтесь следовать условности. Что касается вашего требования, я думаю, вы можете создать представление данных компонента - компонент, прослушивать изменения в магазине и создавать дочерние элементы. - person bigopon; 28.02.2017

Вы можете добавить параметр магазина на свою панель. Extjs загрузит магазин напрямую.

store: Ext.Create('Yourapp.store.storename'),

person Sumeet Roy    schedule 16.03.2017