ecomfe / ef

ef is a integration framework with er & esui
14 stars 15 forks source link

增强ActionPanel中子Action与父Action的事件交互 #13

Closed jinzhubaofu closed 10 years ago

jinzhubaofu commented 10 years ago

现在ef/ActionPanel中的子Action无法与父Action进行事件交互。原因是父Action根本不知道子Action的存在。子Action是包裹在esui控件中的;

目前,唯一的方法是通过全局的er/events来完成,个人感觉有点tricky;

大概有个思路是将子Action的事件代理到Panel控件实例上,例如:

panel.action.on('*', function (e) {
    panel.fire('action-' + e.type, e);
});

然后,在ef/View中就可以使用uiEvents来配置事件侦听

ParentView.prototype.uiEvents = {
    actionPanel: {
        'action-submit': function (e) {
              // 释放一个子Action自定义的事件
              this.fire('child-action-submit', e.data);
        },
        'action-cancel': function () {
              // 善后之类的啥啥啥
        }
    }
};
otakustay commented 10 years ago

3.1版本中有这功能,事件名为action@xxx

https://github.com/ecomfe/ef/blob/3.1.0-dev/src/ActionPanel.js#L45

otakustay commented 10 years ago

另外在任何代码中均建议用panel.get('action')代替panel.action,不局限于ActionPanel,所有控件的属性应该用get访问

jinzhubaofu commented 10 years ago

嗯,刚没仔细看最新的代码。在我们项目中还在使用3.0.2版本。现在升级到3.1.0是否靠谱?

另外在任何代码中均建议用panel.get('action')代替panel.action,不局限于ActionPanel,所有控件的属性应该用get访问

收到

otakustay commented 10 years ago

总之管家用着3.1没啥问题,但是ef一升,er和esui都要升,有几个小的breaking change,我得花时间整理下,你要不缓缓?或者把这个功能单独给你个patch你先用?

jinzhubaofu commented 10 years ago

我们也不是很急。现在我们用着比较丑的代码在跑,但功能上满足了业务需求,暂时没问题。等3.1大家统一升级好了。

jinzhubaofu commented 10 years ago

我们也不是很急。现在我们用着比较丑的代码在跑,但功能上满足了业务需求,暂时没问题。等3.1大家统一升级好了。