Как обновить элементы панели вкладок в Sencha Touch 2

Я использую панель вкладок (Ext.tab.Panel), которая имеет 4 вкладки и на одном из дочерних экранов, когда пользователь делает выбор из группы переключателей, я хотел бы, чтобы панель вкладок обновлялась (т.е. загружала новый текст , новые иконки). Как заставить панель вкладок (которая является основным навигационным элементом приложения) обновляться?

Я попытался установить метод show: function() { } в представлении следующим образом:

Ext.define('MyApp.view.Main', { 
    extend: 'Ext.tab.Panel',
...
    show: function() {
        this.callParent();
        ... reload stuff
    }
});

person M Azam    schedule 17.01.2013    source источник
comment
Вы хотите изменить вкладки на панели вкладок, верно?   -  person Josh    schedule 17.01.2013


Ответы (1)


Вкладки/значки в Ext.tab.Panel составляют свойство items компонента. Чтобы изменить эти вкладки/значки, вы должны изменить элементы.

Используйте setItems(items) для эффективного измените вкладки/значки Ext.tab.Panel внутри вашего слушателя.

var tabpanel = Ext.getCmp('tabpanelid'); // Get appropriate panel using its id

// Removes the current tabs, and inserts the following 2 tabs
tabpanel.setItems([
    {
        title: 'Tab1',
        iconCls: 'info',
        html: 'Foo'
    },
    {
        title: 'Tab2',
        iconCls: 'reply',
        html: 'Bar'
    }
);

Посмотрите здесь рабочий пример.

ОБНОВЛЕНИЕ: чтобы изменить один из текущих элементов, используйте getItems(), измените соответствующие элементы и вызовите setItems(items).

Обновленный пример

person Josh    schedule 17.01.2013
comment
Что, если я хочу работать на более детальном уровне, вместо setItems я просто хочу изменить название самих элементов, например item.config.title = "Something New". Как бы я это сделал? - person M Azam; 17.01.2013
comment
Вы можете вызвать getItems(), выполните итерацию по каждому элементу в массиве элементов и измените соответствующие элементы, а затем вызовите setItems(items) с измененными элементами. - person Josh; 17.01.2013
comment
Это приводит к тому, что весь интерфейс становится пустым с отображаемыми элементами панели вкладок, но элементы панели вкладок отсутствуют после вызова setItems(items) — этот вызов выполняется из контроллера. Итак, я могу сказать, что это, вероятно, не правильный метод обновления элементов панели вкладок. - person M Azam; 18.01.2013
comment
Скорее всего, есть ошибка в том, как вы с этим справляетесь. Независимо от того, выполняется ли вызов из прослушивателя в представлении или из метода в контроллере, если вы правильно их вызываете. Убедитесь, что ваш items содержит то, что вы думаете. Если вы предоставите более релевантный код для вашей локализованной проблемы, то решение может быть более приспособлено к потребностям проблемы. - person Josh; 18.01.2013