在Ember 2.5中实现加载屏幕的最佳方法是什么?我想要实现的是:show splash screen - >在后台加载数据 - >当DOM准备就绪时,隐藏启动画面。
我尝试了几个选项,但是当文档准备就绪时我无法隐藏启动画面。我正在加载一个大表,因此完成DOM需要一些时间,因此模型准备就不是正确的钩子。
答案 0 :(得分:1)
我是通过将自定义HTML(简单加载div)添加到app / index.html:
来实现的<body>
<div class="loading-overlay" id="initialLoading"></div>
{{content-for "body"}}
<script src="assets/vendor.js"></script>
<script src="assets/event.js"></script>
{{content-for "body-footer"}}
</body>
然后我将以下内容添加到我的app / application / route.js:
actions: {
loading(transition/* , originRoute*/) {
let controller = this.get('controller');
if(controller) {
controller.set('currentlyLoading', true);
}
transition.promise.finally(function() {
$("#initialLoading").remove();
if(controller) {
controller.set('currentlyLoading', false);
}
});
}
}
在我的app / application / template.hbs中,我还必须添加加载div:
{{#if currentlyLoading}}
<div class="loading-overlay"></div>
{{/if}}
那会发生什么?
我希望它有所帮助。