Sencha Touch 2 - заполнение панели заголовка с помощью магазина - PullRequest
0 голосов
/ 03 апреля 2012

Я работаю с Sencha Touch 2, и мне нужно создать TitleBar, который засасывается в набор экранов.Элементы TitleBar являются выпадающими списками.Элементы в раскрывающихся списках должны быть динамическими и должны быть загружены из файла данных.

Мне удалось загрузить данные, но я не могу передать данные обратно в панель заголовков.Другими словами, мне нужно как-то создать ссылку на заголовок.

Код:

Ext.define('CustomerToolbar', {
extend: 'Ext.TitleBar',


xtype: 'customer-toolbar',


initialize: function() {
    this.callParent(arguments);

    this.loadItems();




    console.info("end of init");       
},


config: {
    layout: 'hbox',


    defaults: {


    }
},


loadItems: function (titleBar) {
    var itemList = [];
    var itemOptionList = [];


    Ext.getStore('OrganizationStore').load(function(organizationList) {


        console.info("getOptionList inside the store load function");


        Ext.each(organizationList, function(organization) {


            console.info("organizations: " + organization.get("name") + "," + organization.get("id"));
            itemOptionList.push({text: organization.get("name"), value: organization.get("id")});


        });


        console.info("itemList - about to populate");
        itemList.push(
            {
                xtype: 'selectfield',
                name: 'customerOptions',
                id :'organizationId',
                options: itemOptionList,
                action :'selectOrganizationAction'
            }
        );
        console.info("itemList - populated");
        console.info("itemList within the store block: " + itemList);


        console.info("this: " + this);


       //THIS IS WHERE I AM HAVING THE PROBLEM. 
       //The variable this points to the store and not to the TitleBar
       //this.setItems(itemList);


    });


    console.info("itemList outside the store block: " + itemList);
}

});

1 Ответ

0 голосов
/ 04 апреля 2012

Вы можете добавить слушателя к своему полю выбора и сделать

listeners:{
            change:function(){
                title = Ext.getCmp('organizationId').getValue();
                Ext.getCmp('TitlBarID').setTitle(title);
            }
        }

Я знаю, что Ext.getCmp не модно, но он работает

...