8000 内置不再支持$win与$doc的事件绑定,另外处理(更新:仍然支持~) · Issue #9 · thx/magix · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
This repository was archived by the owner on Nov 12, 2024. It is now read-only.

内置不再支持$win与$doc的事件绑定,另外处理(更新:仍然支持~) #9

Closed
xinglie opened this issue Jul 17, 2016 · 7 comments

Comments

@xinglie
Copy link
Member
xinglie commented Jul 17, 2016

原来写法:

'$win<scroll>':function(e){
    console.log(e);
}

打算做一个扩展插件,支持所有的选择器写法,如:

'$div > input<change>':function(e){
   console.log(e)
},
'$win<scroll>':function(e){
   console.log(e);
}

选择器写法是在无法直接在节点上添加mx-event时所采用的方案,选择器以$开头,标示接下来的内容是css选择器而非事件名。

插件支持要晚些,主要原因是这种需求在实际运用中较少用到,而用到较多的window或document上的事件绑定,通常我们又是如下绑定

init:function(){
    $(window).on('scroll',fn);
}

这是因为在绑定事件时候,可能与view是无关的,所以无法总是传递一个view对象。
既然用的少而又有其它更方便的方案可选,故移除这部分的代码,以减少文件体积

@xinglie
Copy link
Member Author
xinglie commented Aug 9, 2016

考虑这样的需求:

某一个view需要全局派发一个事件供其它view监听
其它view只需要类似'$doc<hideFilter,showFilter>':function(e){}监听即可
提供类似Magix.triggerDoc(data)这样的调用方式

@xinglie xinglie reopened this Aug 9, 2016
xinglie added a commit that referenced this issue Aug 12, 2016
@xinglie
Copy link
Member Author
xinglie commented Aug 12, 2016

还是内置支持比较好,不但支持$win$doc,还支持以$开头的选择器,如'$div[class="a"]<click>':function(e){}

body上的事件,目前看向document上绑定应该足够用了,暂不提供向body绑定事件

@xinglie xinglie closed this as completed Aug 12, 2016
@xinglie xinglie changed the title 内置不再支持$win与$doc的事件绑定,另外处理 内置不再支持$win与$doc的事件绑定,另外处理(更新:仍然支持~) Feb 18, 2017
@youwenda
Copy link
youwenda commented Feb 20, 2017

事件支持selector这种处理虽然是方便了mixin view这种情况,但是增加了两种事件代理方法,而且现在vue 和 react 的事件写法包括mixin的功能还都是直接在模板上显式增加处理方法。

另外是插件的形式,是magix3.x 版本中定义modules模式还是以附着js方式引入,因为整体在使用上还是会让用户感觉有时候就支持有时候不支持了

@youwenda
Copy link

另外mouseenter mouseleave 是不是也已经不支持了

@xinglie
Copy link
Member Author
xinglie commented Feb 20, 2017

@youwenda

  1. 支持selector这种我是期望magix可以满足开发者绝大多数的事件绑定,而不用考虑何时解绑的问题,比如document和window上的事件绑定,在项目中经常用到。选择器只是在这个基础上延伸一下。像你提到的vue或react,他们在模板上显式增加处理方法,我认为是不妥的,试想一下,你看到一个事件处理,然后在当前view的代码上还看不到它所对应的事件处理函数,请问后期review或重构代码是不是非常不方便?同时别人在用你的mixin时,是不是也不方便 ?不但引进来,还要在页面上写上相应的处理函数?我期望拿过来就是完整的功能,就像我们的view一样。不用修改当前view的任何html
    如果mixin只是做为提供util方法而存在,个人觉得就失去了意义,完全就没必要了

选择器这个只是在不方便去修改html的情况下才用的,比如已经渲染好的列表,或由tms输出的html片断。如果能直接操作html,自然是使用在html里添加mx-eventType的属性了。

  1. 这个功能是基础功能,以后magix的版本都会支持,做为基础功能存在
  2. mouseenter和mouseleave取决于类库,因为要用冒泡的特性,不过个人更推荐mouseover和mouseout再配合Magix.inside方法会更好。

@xinglie xinglie reopened this Feb 20, 2017
@xinglie
Copy link
Member Author
xinglie commented Feb 20, 2017

这里面记录了我当初做3.0的事情,开始做了减发,把所有非必须的功能删去,然后再根据情况加回来,这样才能保证每一个功能点都是非常有用的。

@youwenda
Copy link

mark一下

支持选择器写法 现在的$doc 和 $win 是不是也应该改成 $document $window

@xinglie xinglie closed this as completed Jun 7, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants
0