-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Aspect的功能强化 #5
Comments
@lianqin7 这个内部有讨论过,当时是本着保持简单的原则,没有增加更多 Aspect 的功能 这个主要还取决于 events 的机制,目前和 Backbone 等类库的原则是一致的,简单一致,如果发现不能满足,往往可以通过调整应用层的代码结构、逻辑来实现 目前 before 方法中,阻止 method 执行的需求,看起来很普遍,会仔细考虑下,如果确实需要就增加。 其他 Aspect 的功能暂时不增加。 |
events 事件的阻止功能还是得仔细考虑下,需求挺旺盛的。 |
考虑加上这个功能 callback return false 的时候阻止方法执行。 |
从实现的角度说明下
show 方法调用时会依次调用
还有 events 的 trigger 方法是返回实例的,所以不能取得 callback 的值,那就需要要异步的方式去实现。
只要调用了 stop 就会阻止。 @lianqin7 @lifesinger 有什么看法 |
应该是按顺序阻止吧?就是不再往后执行。
这个有点不妥,目前的设计里,callback 的参数是 trigger 时传入的,不一定是 stop 方法。这一块的 API 设计有点头疼。 参考 DOM 的话,preventDefault / stopImmediately 等,则有点把事情搞复杂。 感觉还是设计成 |
这样的话 events 的改动稍大,研究下。 |
YUI3的设计是:
个人比较推荐YUI的处理方式,因为:
|
这个对 events 的改动主要还是在 |
确实会有影响,如果不改这里,api 的设计上会很头疼,要拿 callback 的返回值很麻烦 |
|
总结下
|
想了下,感觉链式的阻止不太好。 注册事件的人可能不是同一个人,如果自己注册的 callback 因上一个阻止而没执行,这个有背于直觉。 所以采用只要有一个阻止就不执行的方式。 |
好,这样不错。 |
before 阻止方法执行的同时也会阻止 after 的执行。 |
@lifesinger
before方法目前还是 "只读" 的,无法阻止method本身的执行,有没有计划去升级Aspect的功能?
利用before方法来阻止method的执行的应用场景还是比较多的,目前只能人肉的去
trigger('before:method')
来达到目的,但是这种做法对于method的override来说就是灾难:(The text was updated successfully, but these errors were encountered: