我试过了
/app/routes/loading.hbs
/app/pods/loading/template.hbs
/app/pods/loading.hbs
/app/pods/application/loading/template.hbs
/app/pods/application/loading.hbs
/app/templates/loading.hbs
/app/templates/application-loading.hbs
以上都不是。
我将此添加到我的应用程序路径并且它可以工作,但它只在应用程序模板中呈现微调器,而不是当前路径的适当插座。
//app/pods/application/template.hbs
{{#if isLoading}}
<i class="fa fa-spinner fa-pulse fa-5x"></i>
{{/if}}
//app/pods/application/route.js
actions: {
loading(transition, originRoute) {
let controller = this.controllerFor('application');
controller.set('isLoading', true);
transition.promise.finally(function() {
controller.set('isLoading', false);
});
}
}
我做错了什么?为什么模板不呈现?我使用ember-cli@2.4.2和ember@2.4.1。
答案 0 :(得分:3)
在这方面也一直在努力,帕特里克的答案帮了很多,但根据那个线程打电话给超级也没有帮助。删除加载操作确实有帮助,但根本原因实际上并不是因为有加载操作。您可以保留加载操作,但是为了让加载模板从加载操作呈现为return true;
,如果不返回true,则不会呈现加载模板。
我的猜测是,如果你没有返回true,事件会停止传播,这会阻止默认行为发生
答案 1 :(得分:1)
答案 2 :(得分:1)
我一直在努力解决这个问题两天。我使用的是Ember 2.5.0和一个pod结构。我的加载模板位于app / templates / loading.hbs中。深入了解它让我变成了贪婪解决者和this issue。如果你摆脱了加载动作,它将显示加载模板 - 非常奇怪。如果您需要捕获事件,该线程会说要调用super,但这对我没用。
答案 3 :(得分:0)
你试过吗
/app/templates/loading.hbs
不使用加载操作?
加载操作会停止加载事件的传播,除非您从操作中返回true。
答案 4 :(得分:0)
您无需覆盖路线中的加载操作。只需定义app / templates / loading.hbs即可。无论何时从任何路径加载模型,加载模板都将自动显示。 如果你想使用一个属性来显示一个加载状态,你就可以进行加载服务,然后你可以在每个路由,控制器或组件中访问它。
编辑:您还应该阅读指南:https://guides.emberjs.com/v2.5.0/routing/loading-and-error-substates/
如果您按照指南操作,请看看加载模板的工作原理。