据我所知EmberJS Guide to Routing,您应该在Route
的{{1}}挂钩中指定要加载路线的模型。模型钩子可以返回一个promise,如果是,则路径将暂停,直到promise解析。
这就是我的问题:这种方法在正常使用情况下非常有效(用户触发从任何其他路线到相关路线的转换。)如果用户当前在路线上,则会出现问题问题。
如果用户触发页面刷新(使用浏览器的刷新按钮,或model
或其他可能的触发器,ctrl+r
挂钩中的promise
会导致用户坐下在一个空白的白页上,直到该承诺返回。在大型数据集中,这可能是几秒钟,这不会带来出色的用户体验。
那么,我该如何解决这个问题呢?
我开发的唯一解决方案是在路由的model
挂钩中触发数据加载,并在该承诺返回时手动设置控制器的模型。我不喜欢这样做,因为我正在绕开整个Ember的模型框架。
我希望在activate
挂钩挂起页面之前呈现application
模板,至少是这样。任何关于如何解决这个问题的指导将不胜感激。
如果需要上下文:正如标签所暗示的那样,我使用的是Ember-Data。我正在使用几乎完全开箱即用的RESTAdapter,未经修改。
答案 0 :(得分:1)
路由具有子状态,可用于在加载模型时呈现临时模板。请参阅:http://guides.emberjs.com/v1.10.0/routing/loading-and-error-substates/
第一个加载/初始空白页面是一个UX问题,将通过快速启动解决,请参阅:http://emberjs.com/blog/2014/12/22/inside-fastboot-the-road-to-server-side-rendering.html
快速启动已经可以通过Ember的一个分支机构获得,我不知道这个名字。