将activate事件绑定到网格面板Extjs4

时间:2011-05-21 19:07:18

标签: javascript-events extjs grid extjs4

我想问一下我在哪里可以为我的网格MVC添加一个监听器

当我这样做时,没有任何事情发生:

Ext.define('myApp.view.reslist' ,{
    extend: 'Ext.grid.Panel',
    alias : 'widget.reslist',
    store : 'resStore',
    listeners: {
          activate: {
            fn: function(e){ 
                console.log('reslist panel activated');
                  }
            }
           },
    dockedItems: [{
           xtype: 'pagbar',
           store: 'resStore',
           dock: 'top',
           displayInfo: true
       }],
       ..... rest of grid configs

它适用于点击事件:

listeners: {
          activate: {
            fn: function(e){ 
                console.log('reslist panel clicked');
                 }
          }
           }

注意:我的控制器的init仍为空:

Ext.define('myApp.controller.resControl', {
    extend: 'Ext.app.Controller',

    stores: ['resStore'],

    models: ['resModel'],

    views: ['reslist','pagbar'],

    init: function() {

            // nothing here 
        }
});

1 个答案:

答案 0 :(得分:3)

视图的操作和事件进入其适当的控制器。我的观点仅包含用于构建和建立的配置和必要的方法。渲染组件。所有事件处理程序,按钮上的操作等都在控制器中。以下是我的控制器的样子:

Ext.define('myApp.controller.resControl', {
    extend: 'Ext.app.Controller',
    stores: ['resStore'],
    models: ['resModel'],
    views: ['reslist','pagbar'],
    init: function() {

        this.control({
            'reslist' : {
                activate: function(e) { 
                        alert('reslist panel activated');
                }               
            }
        });
    }
});

请注意,仅当使用选项卡面板显示时才会在面板上调用activate事件。通过单击选项卡激活面板时,将调用该事件。