现在我要让每个可以 Route 到的 URL Hash 都可以正确显示内容,所以可能一些功能层级较深的 Controller 或者 Stack 在一开始就会被触发。
举个例子,有一个 Stack 包含 Home 和 Project 两个 Controller,AppController 启动的时候负责Project.fetch()
而 ProjectController 通过 refresh 得知可以使用 Project 了。
那么这个时候一个 URL Hash #/project/1/action 过来,Stack 中必将去激活 ProjectController,ProjectController#active()
回调被触发,问题来了~
Project.fetch() 通过网络获取数据,非常有可能在被依赖的 Controller 激活后还没有完成自己的工作,此时激活回调使用 Project.find 必出异常。
普通的 Controller 我可以通过在 Project 的 refresh 事件中去调用 render,而 Stack 的 active 却与 Model 没什么关联。
我也曾想过在 AppController 中绑定必须的某些 Model 的 refresh 事件,然后在创建 Controller,但这样觉得失去了 Spine 推荐的通过 Event 隔离的意义,我觉得肯定有更好的方法来处理,其实就是一个 Model 和依赖 Model 的 Controller 同步的问题。
请各位给点意见。