-
Notifications
You must be signed in to change notification settings - Fork 169
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
Action的initBehavior事件疑问 #27
Comments
原则上,View就是一个东西,refresh等于View的重新渲染,但 并不会销毁并重新创建View ,因此通过 |
案例已经提交https://github.com/killeryyl/er/tree/master/example/book-store-subAction |
有几个疑问:
谢谢 |
情况是这样的,入口是book/Index文件 |
说下我的看法: 首先,2个对象(我们不管这是Action还是View什么的,总之是2个对象)之间的交互有2条路:
但这2条路是有区别的,它们所负责的 逻辑流动方向 不同:
这2条路不应该混用,因此 给自己绑定事件 这样的逻辑实际上是一个不合理的设计,因为 自己随时都知道自己在干啥,不需要通知 。另一方面, 别人不应该触发我的事件 (除非我天生就是个消息总线,比如 er/events 模块) ,所以被它人调用 所以希望不要纠结于用多种方法实现交互,ER框架的定位是一个 Solution Framework ,介于 解决方案 和 框架之间 (这个是我的错没有更详细的文档来说明ER到底是个啥)。 解决方案 的特点是圈死所有的事情,让开发者完全按自己的模式来。 框架 的特点是提供基础的业务模型,让开发者在此之上构建抽象层和业务实现。 而 Solution Framework 介于两者之间,本身仅提供基础的业务模型,但在这个模型中,会出现 对业务实现的引导思想 ,使得业务实现时不会太过五花八门离题万里,这是我的目标。因此,ER一直以来都透露一个信息,即 对外通知用事件,外部命令用方法 ,如果没有非常明确的优势,没必要改掉这个理念。 因此:
|
我明天会出一个 |
回答下最后onentercomplete:这个是supAction生命周期的事,只触发一次,也就是说loadSubAction也只触发一次。subAction被存起来了。至于subAction的自身刷新是在search里调用enter方法,让其进入生命周期的,但这个使用不会正真结束其生命,subAction还是存在于supAction对象里。 |
因为从我的角度来看,改了参数,不就是视图刷新嘛,Action管的业务逻辑似乎没必要再重新来一下…… |
enter()这里走了一遍model的数据获取流程。enter里传进去的context参数相当于url里qurey的那串东东。所以光对view进行render是不够的。 |
退一步其实可以这么理解,如果#book-list是个iframe的话,那supAction里操作subAction就简化成了修改iframe的src,变更里面的query参数,走一遍Action,包括根据最新参数获取相应的数据,然后渲染视图,绑定事件。 |
如果相当于修改 简单来说,就是我认为修改 如果切实地,缓存一个Action对象这样做有很大的收益,我们再看看这样的功能是应该由Action基类提供,还是说这是具体有业务需要时,这个Action作为个体提供类似 |
嗯,我这个复用确实看着不对劲。缓存Action对象的至少能保证父级Action能方便地使用子级Action的方法等。 |
我做了一个 设计上,我的追求是 透明化 ,即一个Action基本不需要关心自己是主Action还是子Action,比如其中链接点击的跳转、编码的跳转(统一用 交互上我还没写足够的示例(这一块没啥好交互的),但交互的方式都是成立的,有注册子Action的 但子Action,默认情况下框架是不管理的,需要统一处理,而且Action的加载是异步的( @killeryyl 给的方案是同步的,事实上不是太合适),所以加载有个过程,如何控制并行的加载相互冲突等问题,也由调用者管理(在 book/List 中有实现,调用 我们再相互参考下,看看有什么不足需要弥补的~请 @DDDBear 也一起来讨论下 |
在renderChildAction中已经重制了action.redirect功能,这个可以疑问得以解决,可以消除。 |
按理说这个initBehavior就类似与以前er框架的render操作。在之后的refresh里是不会再次触发的了。这个在loadSubAction里很有必要这么做。我这里马上就弄好book-store里loadSubAction的样例了,期间遇到了些,一会请你一起看看。
The text was updated successfully, but these errors were encountered: