extjs меняет заголовок панели на событии
У меня есть панель сетки, как это
Ext.define('sCon.view.SalesGrid',{
extend: 'Ext.grid.GridPanel',
title: 'Sales Data',
//other params
initComponent: function(){
this.callParent(arguments);
}
});
На событии клика я хочу изменить заголовок этой панели. Мой код внутри контроллера выглядит следующим образом.
Ext.define('sCon.controller.SalesGridController', {
extend: 'Ext.app.Controller',
views: ['SalesGrid'],
// other handlers
changeTitle: function(newTitle){
this.getView('SalesGrid').setTitle('title_changed');
}
В настоящее время говорится, что у него нет функции setTitle(). Но в документах говорится, что на панели сетки есть функция setTitle(). Я также попытался изменить заголовок, используя переменную title
changeTitle: function(newTitle){
this.getView('SalesGrid').title = 'title_changed';
Ни один не работает.. Пожалуйста, помогите.
2 ответа
UPD: вот некоторые refs
документы от Sencha для ExtJS 4.1.
использование refs
Свойство вашего контроллера, чтобы получить ссылки на любые компоненты.
В вашем примере:
Ext.define('sCon.view.SalesGrid',{
extend: 'Ext.grid.GridPanel',
title: 'Sales Data',
alias: 'widget.salesgrid',
//other params
initComponent: function(){
this.callParent(arguments);
}
});
В контроллер добавьте:
refs: [
{ ref: 'salesGrid', selector: 'salesgrid', },
]
Затем вы можете получить доступ к представлению SalesGrid из любой точки вашего контроллера, например this.getSalesGrid();
метод.
В твоем случае:
changeTitle: function(newTitle){
this.getSalesGrid().setTitle('title_changed');
}
Заметка
В описанном случае ответ webbandit является лучшим для доступа к экземпляру представления, этот остается для пояснения по использованию автоматически сгенерированных геттеров.
Метод выбора, который вы используете, просто дает вам класс, а не его экземпляр!
Вы должны сделать это так
this.getView('SalesGrid').create().setTitle('title_changed');
См API