gazira icon indicating copy to clipboard operation
gazira copied to clipboard

改进Action.js的一点建议

Open chengbapi opened this issue 12 years ago • 1 comments

  • 增强绑定事件的复用性(以符合较复杂的业务逻辑)
    1. 提供新接口给action增加类似Aspect的after before方法(能够满足绝大部分需求)
    2. 或者重构fetch[key]为数组,后注册的action跟在队列后面,可以通过判断函数的返回值做简单的流程控制(但是这与现在的返回值用于事件的冒泡和默认行为有所冲突)
  • 事件冒泡的支持
    1. 在实际应用中很少将action.listen绑定到非document的DOM上,因此原先的设计中,根据回调函数的返回值来做冒泡的处理,由于事件已经到了document,所以就基本用不上。
    2. 希望改进后的Action能够支持'data-action'上的事件冒泡。即,点击子元素,在触发冒泡情况下,父级元素的'data-action'也能被触发(jQuery的事件代理也做了类似的node.parent遍历)

chengbapi avatar Apr 03 '14 16:04 chengbapi

1.1 aspect 这个考虑加入, 例如之前的一些判断是否执行 action就可以放在 before 处理 1.2 待定 action 的复用之前有考虑过, 通过 data-action="a b c" 这种方式触发 a,b,c 3个 action

2.1 这个有历史原因存在,原先 widget 这块是自己做的, action 绑定的节点是 widget 容器. 后来有了 arale 并且做的更好就引入了,导致原先想为 widget 服务的 action 只用在了业务上, 从而基本都只剩下 document 绑定了 2.2 action 冒泡确实更符合事件的行为, 但是和目前的应用场景可能有比较大的冲突, 尤其是event target 问题 以及 is/not 行为影响(target 需要另外的遍历规则来处理, is/not 规则则可能需要重新定义,例如 子节点的 action 触发, 父节点action 触发时, 不能触发子节点的 not, 若按照现有规则是会触发的) 这种 action 方式的应用场景可以举例说明下

caolvchong avatar Apr 04 '14 03:04 caolvchong