我该如何处理EmberJS中的页面刷新?

时间:2015-03-29 23:33:34

标签: ember.js

据我所知EmberJS Guide to Routing,您应该在Route的{​​{1}}挂钩中指定要加载路线的模型。模型钩子可以返回一个promise,如果是,则路径将暂停,直到promise解析。

这就是我的问题:这种方法在正常使用情况下非常有效(用户触发从任何其他路线到相关路线的转换。)如果用户当前在路线上,则会出现问题问题。

如果用户触发页面刷新(使用浏览器的刷新按钮,或model或其他可能的触发器,ctrl+r挂钩中的promise会导致用户坐下在一个空白的白页上,直到该承诺返回。在大型数据集中,这可能是几秒钟,这不会带来出色的用户体验。

那么,我该如何解决这个问题呢?

我开发的唯一解决方案是在路由的model挂钩中触发数据加载,并在该承诺返回时手动设置控制器的模型。我不喜欢这样做,因为我正在绕开整个Ember的模型框架。

我希望在activate挂钩挂起页面之前呈现application模板,至少是这样。任何关于如何解决这个问题的指导将不胜感激。

如果需要上下文:正如标签所暗示的那样,我使用的是Ember-Data。我正在使用几乎完全开箱即用的RESTAdapter,未经修改。

1 个答案:

答案 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的一个分支机构获得,我不知道这个名字。