我是Ember的新手,我希望在用户按下"从服务器获取内容时显示全屏覆盖图"按钮。
实现这一目标的最佳方法是什么?
Ember是否已提供内置功能?或者唯一的方法是在我的一个模板中有一段HTML,以便在我进行AJAX调用的promise返回时显示/隐藏它?
答案 0 :(得分:1)
您可以选择几种方式。
第一个涉及路线变化。传统上讲,如果用户正在点击转换到另一条路线的按钮a separate route can be created to handle this in-between loading experience。
为了简要描述一下,如果你有一个名为foo
的路由,创建一个名为foo-loading
的兄弟路由及相关模板,将显示一个" foo-loading"提取事物时的页面状态,然后在事情好的时候解除它。
或者,正如您所暗示的,如果用户的号召性用语意图在同一路线上更新结果,则加载服务可能会有用。在您的应用程序模板中,您可以拥有默认隐藏的加载div。在启动AJAX请求之前,您可以打开加载状态并显示加载div。然后,一旦AJAX调用结算,finally
块可能包含隐藏加载div的调用。
后一种方法将涉及主应用程序模板中的有条件加载块,加载服务处理显示和隐藏以及加载模板。
答案 1 :(得分:1)
您可以使用ember-modal-dialog创建一个加载屏幕组件,在您等待ajax请求时呈现该组件。
例如:
// view.js
showLoadingScreen: true
// view.html
{{#if showLoadingScreen}}
{{loading-screen}}
{{/if}}
// loading-screen.html
{{#ember-modal-dialog}}
<div class="loader-full-screen-class"></div>
{{/modal-dialog}}
组件/ ember-modal-dialog的优点是这个模式通常实现为模式,这个库是ember中的标准。然后,该组件可以将它放在您需要的任何位置。