ext中的fireEvent事件

首先看一段代码:

Ext.define('XIRJS.widget.risk.scene.defined.RiskDefinedGrid', {
    extend : 'XIRJS.widget.base.BaseQueryPanel',
    sqlPath: 'com.xquant.platform.component.javascript.risk.scene.TrskSceneWebMapper',
    queryModel: 'MAPPER',
    enablePager: true,
    exportTitle: '情景定义',
    initComponent: function(){
        this.addEvents('gotoDefinePanel');
        this.callParent(arguments);
    },

然后可以看到我们在这里为我们的自定义控件RiskDefinedGrid添加了一个名为”gotoDefinePanel”的监听事件,在接下来的代码中我们在一个按钮的事件监听中为这个控件注册了”gotoDefinePanel”监听事件(也就是说如果执行了addButtonHandler方法和updButtonHandler方法时,就会触发这个事件,并且将参数也传递出去)

addButtonHandler: function(){
this.fireEvent('gotoDefinePanel', this,XIRJS.widget.risk.scene.defined.BaseInfoPanel.ADD_STATUS);
},
updButtonHandler: function(){
this.fireEvent('gotoDefinePanel', this, XIRJS.widget.risk.scene.defined.BaseInfoPanel.UPDATE_STATUS, this.grid.getSelectRecord());
},

在接下来的新定义的panel界面中,我们应用了前面定义的RiskDefinedGrid控件,然后可以看到,我们为这个控件绑定了一个为“gotoDefinePanel”类型的监听事件,也就是说在触发了“gotoDefinePanel”事件的时候,我们就要执行当前的“gotoDefinePanelHandler”方法(其实整体的思路就是:首先我们在前面的控件中为按钮注册了“gotoDefinePanel”事件,然后当我们点击按钮的时候,就会触发这个事件,接下来在panel中应用了这个控件后,因此也会触发我们为这个控件绑定的事件,就会执行“gotoDefinePanelHandler”方法体)。

Ext.define('XIRJS.widget.risk.scene.defined.RiskDefinedPanel', {
    extend : 'Ext.panel.Panel',
    layout: 'fit',
    requires : ['XIRJS.widget.risk.scene.defined.BaseInfoPanel', 'XIRJS.widget.risk.scene.defined.CurveInfoPanel'],
    title: '情景定义',
    width: 1000,//这里一定要设置好宽度,否则不显示  
    height:500,
    initComponent: function(){
        this.items = [ this.buildGrid()];
        this.callParent(arguments);
        this.mon(this.grid, 'gotoDefinePanel', this.gotoDefinePanelHandler, this);
    },

     buildGrid: function(){
     var grid = Ext.create('XIRJS.widget.risk.scene.defined.RiskDefinedGrid',{
        superPanel : this
        });
        this.grid = grid;
        return grid;
    },

最后总结一下,整个过程就是,为一个自定义的控件使用addEvents来绑定一个自定义的事件类型,然后在接下来,我们可以为这个控件内部逻辑中注册使用这个事件类型(比如:我们点击某一个按钮,就会触发这个事件类型,并且传入需要的参数),接下来调用这个控件的时候,我们就可以为这个控件绑定这个事件类型触发时的进一步处理。
如果觉得难以理解,我们就举一个更简单的例子:
下面一段代码应该都能读懂:

     var me = this;
      me.mon(me.btnAdd,"chick",me.addEvent(),me);

从这里我们就可以看到其实这时候就是我们给当前的btnAdd这个按钮绑定了一个“chick”的事件类型,换句话说就是,当我们的btnAdd按钮被点击的时候,就会执行addEvent这个方法体。那么此时的chick这个事件类型其实就是被在其他地方给定义了的,也就是说在定义button这个类的时候在某个地方执行了一段fiveEvent(“chick”,me,….);的语句,那么此时就完成了这个执行过程了,当我们执行某一段代码(操作)的时候,就会执行fireEvent()方法,然后就触发了“chick”事件,那么此时就会执行addEvent方法。

  • 2
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn_duanjiao2016

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值