我想在加载下一个模板之前在Ember中渲染一个加载模板。现在我有一个应用程序路径的加载模板,如果用户直接导航到URL,它可以正常工作。但是,如果用户在应用的另一个页面中单击link-to
页面,我希望显示相同的模板。如何才能做到这一点?
调度afterRender
不起作用,因为页面还没有“加载”(现在它只是在下一页加载时在上一页停留几秒;使用afterRender导致同样的事情然而,一旦它加载,你可以在它消失之前简要地看一下加载div:显然不是预期的行为)。
如何显示加载模板?
减少加载时间不是一种选择,我们做了一些非常繁重的计算。
编辑:我确实认为我的问题与建议重复的问题不同,因为我希望为所有路由提供相同的加载模板,默认加载模板结构不提供。 “遗留”LoadingRoute解决方案不再适用,因为最新版本的Ember不赞成使用Views。
答案 0 :(得分:6)
根据我的理解,Ember.js loading substates正是您所需要的,尤其是指南的这一部分:
应用/ router.js 强>
Router.map(function() {
this.route('foo', function() {
this.route('bar', function() {
this.route('slow-model');
});
});
});
Ember将尝试从第一个模板开始尝试在层次结构中查找routeName-loading或加载模板:
<强> foo.bar.slow模型加载强>
foo.bar.loading 或 foo.bar-loading
foo.loading 或 foo-loading
加载或加载应用(已经实施)
我建议您删除afterRender(),因为我不知道它是否会干扰触发加载事件。如果指南不提供解决方案,您可以发布一个jsfiddle吗?根据你如何实施网点,Ember.js会变得挑剔......
您可以将我为其他问题创建的example分叉,以快速设置您的JSFiddle以使用Ember.js