Это очень похоже на уже опубликованный вопрос http://www.sencha.com/forum/showthread.php?245591
Вот мой код для Grid (обратите внимание, что прокомментированный слушатель, объявленный в сетке, работает нормально)
Ext.define( 'Fast.view.sales.SalesForecastDealersGrid ' ,{
extend: 'Ext.grid.Panel',
alias : 'widget.SalesForecastDealersGrid' ,
selModel: Ext.create( 'Ext.selection.CheckboxModel' ),// sm,
requires:[ 'Ext.toolbar.Paging'],
columnLines: true,
store: 'sales.SalesForecastDealers', //'sales.ProductByAccount',
columns: [{text: 'Dealer Id',hidden: true ,flex:1,dataIndex:'dealerId' },
{text: 'Customer Name',flex:1,sortable: true,dataIndex: 'dealerName' },
{text: 'Sales Ids',hidden: true,flex:1,sortable: false ,dataIndex:'salesIds' }],
initComponent: function () {
this .dockedItems = [
{
xtype: 'pagingtoolbar' , dock:'bottom' ,
store: 'sales.SalesMonthFct' ,//localStore,
displayInfo: true ,
displayMsg: 'Displaying ProductByAccount {0} - {1} of {2}' +'     ',
emptyMsg: "No ProductByAccount to display"
}];
this .callParent(arguments);
} /*,
listeners:{
selectionchange : function(model, records) {
// var records = grid.getSelectionModel().getSelection();
alert('section changed handler');
}}*/
});
и для контроллера
Ext.define( 'Fast.controller.sales.SalesForecastController', {
extend: 'Ext.app.Controller',
stores: ['sales.SalesWeekFct' ,'sales.SalesMonthFct' ,'sales.SalesForecastDealers' ],
models: [ 'sales.SalesWeekFctModel', 'sales.SalesMonthFctModel' ],
views: ['sales.SalesForecastWeeklyGrid' ,'sales.SalesForecastMonthlyGrid' ,'sales. SalesForecastDealersGrid' ],
refs: [{ref: 'SalesForecastWeeklyGrid',selector: 'SalesForecastWeeklyGrid' }
,{ref: 'SalesForecastMonthlyGrid' ,selector: 'SalesForecastMonthlyGrid' }
,{ref: 'SalesForecastDealersGrid ',selector: 'SalesForecastDealersGrid '}
],
init: function () {
this .control({
//'SalesForecastDealersGrid [action=change]': {selectionchange: this.dealerSelectionChange},
'SalesForecastDealersGrid ': {selectionchange: this .dealerSelectionChange}
});
},
dealerSelectionChanged : function (model, records) {
//var records = grid.getSelectionModel().getSelection();
alert( 'Controllers section changed handler' );
}
});
как вы заметили, я прокомментировал строку «SalesForecastDealersGrid [action=change]»: {selectionchange : this.dealerSelectionChange}», потому что я не могу найти никакой документации об этом «[action=change]», и он просто не срабатывает. ничего в моем случае.
с моим кодом, когда я нажимаю на строку сетки, я получаю сообщение об ошибке в консоли
TypeError: listener.fireFn is undefined
...listener && listener.fireFn.apply(listener.scope || me.observable, args) === fal...
Любая идея, что я могу попробовать дальше?
Заранее спасибо.
this
и.dealerSelectionChange
— опечатка, верно? Точно так же может быть причиной ошибки. - person Izhaki   schedule 12.07.2013