灰烬加载模板永不显示

时间:2016-04-01 01:24:13

标签: ember.js

我试过了

/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。

5 个答案:

答案 0 :(得分:3)

在这方面也一直在努力,帕特里克的答案帮了很多,但根据那个线程打电话给超级也没有帮助。删除加载操作确实有帮助,但根本原因实际上并不是因为有加载操作。您可以保留加载操作,但是为了让加载模板从加载操作呈现为return true;,如果不返回true,则不会呈现加载模板。

我的猜测是,如果你没有返回true,事件会停止传播,这会阻止默认行为发生

答案 1 :(得分:1)

如果你仔细查看文档,那么你会看到

enter image description here

这意味着您需要添加

/app/pods/application-loading/template.hbs

答案 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/

如果您按照指南操作,请看看加载模板的工作原理。