Skip to content

事件机制,是否支持独占模式 #1

@melonHuang

Description

@melonHuang

实现独占模式需要考虑:

  1. 事件名约定
    eg. 如果事件名为”change:index”,那独占模式的属性名应该为什么?onChange:Index??
  2. onTrigger事件,与其他通过on方法绑定的事件,执行顺序如何?
    DOM中的实现还是按照绑定顺序。QWrap是先执行独占事件函数,再执行其他处理函数。

不提供独占模式的理由:

  1. ins.onTrigger = function() {}
    ins.on(’trigger’, function() {})
    使用起来差不多,没有方便很多
  2. 实现的话,事件名,独占函数名的约定较多,用户学习成本更高

替代方案:

给开发者,和使用者提供方便的注册事件方式:

对于开发者:
var MyWidget = Widget.extend({
attrs: {
index: 0
},
_onChangeIndex: function() { // … }
});
可在extend第一个参数的对象中,通过_onChangeIndex属性绑定事件。初始化时,会给实例绑定change:index事件。并且不会将_onChangeIndex方法放到prototype上。

对于使用者:
var ins = new MyWidget({
onChangeIndex: function() { // … }
});
可通过在config定义onChangeIndex, 绑定事件。初始化时,会给实例绑定change:index事件。并且不会将onChangeIndex方法放到prototype上。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions