【问题标题】:ExtJs 4.1 TypeError: 'listener.fireFn is undefined' on grid selectionchange event in controllerExtJs 4.1 TypeError:'listener.fireFn is undefined' on grid selectionchange event on controller
【发布时间】:2023-03-06 06:34:02
【问题描述】:

这与已经发布的问题http://www.sencha.com/forum/showthread.php?245591非常相似

这是我的网格代码(请注意网格中声明的注释监听器工作正常)

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}' +'&nbsp &nbsp &nbsp',
            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 之间的空格是错字,对吧?也可能导致错误。

标签: extjs undefined extjs4.1


【解决方案1】:

你的控制器没有功能:

selectionchange: this .dealerSelectionChange

因为你的函数名是:

dealerSelectionChanged : function (model, records)

【讨论】:

  • 好收获!非常感谢,@mrtgserv!
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 2012-05-12
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 2022-10-20
  • 1970-01-01
相关资源
最近更新 更多