1

我在控制器中订阅的按钮单击事件被触发。这是代码。

WebAppMasterController.js

Ext.define('P.e.w.controller.WebAppMasterController', {
extend: 'P.e.w.controller.IController',
views: [
    'WebAppMasterView'
],
refs: [
    {
        ref: 'webAppView',
        selector: 'WebAppMasterView'
    }
],
init: function () {
     this.control({
        'WebAppMasterView': {
            afterrender: this.viewafterrender
        }
    }, {
        'button[action=save]': {
            click: function () {
                alert('dslksd');
            }
        }
    }
},
viewafterrender: function (panel) {
    alert();
}
});

IController extends "Ext.app.Controller".

在上面的代码中,"afterrender"事件被触发了,但是按钮点击事件没有被触发。

视图:WebAppMasterView.js

Ext.define('P.e.w.view.WebAppMasterView', {
extend: 'P.w.l.Header',
alias: 'widget.WebAppMasterView',
constructor: function (config) {
    var me = this;
    me.centerregion = me.createCenterRegion(config);
    Ext.applyIf(config, {
        favoriteBar: true,
        items: [me.centerregion],
        menuWidth: 0
    });
    this.callParent([config]);
},
 createBody: function () {
    var me = this;
    if (!me.controlPanel) {
        me.controlPanel = Ext.create('Ext.Panel', {
            layout: 'fit'
        });
    }
    return me.controlPanel;
},
 createCenterRegion: function (config) {
    var me = this,
        centerPanel = Ext.create('Ext.Panel', {
            region: 'center',
            layout: 'fit',
            tbar: {
                xtype: 'WorkRequestMenuBar',
                id: 'workrequestmenubar' 
            },
            defaults: {
                border: false
            },
            items: [me.createBody()]
        });
return centerPanel;
}
});

WorkRequestMenuBar.js

Ext.define('P.e.w.view.WorkRequestMenuBar', {
extend: 'Ext.Toolbar', alias: 'widget.WorkRequestMenuBar',
constructor: function (config) {
    config = config || {};
    Ext.apply(config, {
        defaults: {
            scale: 'large',
            cls: 'x-btn-text-icon',
            iconAlign: 'top'
        },
        items: [
                {
                    text: 'NEW_WORK_REQUEST',                        
                    iconCls: 'menubar-createWorkRequest',
                    action: 'save'
                },
                {
                    text: 'OVERVIEW',
                    iconCls: 'menubar-overview'

                }, '->', {
                    iconCls: 'icon-biggerHelp',
                    width: 80,
                    text: 'HELP'
                }
            ]
    });
    this.callParent([config]);
}
});
4

1 回答 1

0

你有几个问题。

第一个。您的控制器中存在语法错误

     this.control({
               'WebAppMasterView': {
                  afterrender: this.viewafterrender
                }
            }, 
            {
               'button[action=save]': {
                    click: function () {
                        alert('dslksd');
                    }
                }
            }
     //missing --> ); 
},

第二。工具栏配置方法应该是 initComponent 方法。

于 2013-01-30T18:02:22.637 回答