【问题标题】:Ember Loading Template never displayingEmber 加载模板从不显示
【发布时间】:2016-04-01 01:24:12
【问题描述】:

我试过了

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

【问题讨论】:

  • 也许你正在覆盖 Ember.Route “加载”的默认行为。试试这个。_super(...arguments)
  • 你想让我把这个放在哪里?即使在我添加加载操作之前它也无法正常工作。我只是将其用作解决方法。
  • Mkae,那么这不是问题所在。以为你添加加载动作时它坏了。

标签: ember.js


【解决方案1】:

在这方面也一直在苦苦挣扎,帕特里克的回答有很大帮助,但根据该线程调用 super 也无济于事。删除加载操作确实有帮助,但根本原因实际上并不是因为有加载操作。您可以保留加载操作,但为了让加载模板呈现,您需要从加载操作中 return true;,如果您不返回 true,则加载模板将不会被渲染。

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

【讨论】:

    【解决方案2】:

    如果您更仔细地查看文档,您会看到

    表示需要添加

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

    【讨论】:

      【解决方案3】:

      我已经为这个问题苦苦挣扎了两天。我正在使用 Ember 2.5.0 和 pod 结构。我的加载模板位于 app/templates/loading.hbs。深入研究它使我找到了 ember-resolver 和 this issue。如果你摆脱加载动作,它会显示加载模板 - 很奇怪。该线程说如果您需要捕获事件,请调用 super 但这对我不起作用。

      【讨论】:

        【解决方案4】:

        你试过了吗

        /app/templates/loading.hbs 
        

        不使用加载动作?

        加载操作会停止加载事件的传播,除非您从该操作返回 true。

        【讨论】:

        • 是的,倒数第二个。
        • 不过我会再试一次。
        • 我不确定你是否也尝试过没有定义加载操作,因为你的问题没有说清楚
        【解决方案5】:

        您不需要覆盖路由中的加载操作。只需定义一个 app/templates/loading.hbs。每当您从任何路线加载模型时,加载模板都会自动显示。 如果你想使用属性来显示加载状态,你应该创建一个加载服务,然后你可以在每个路由、控制器或组件中访问它。

        编辑:您还应该阅读指南:https://guides.emberjs.com/v2.5.0/routing/loading-and-error-substates/

        如果您按照指南进行操作,您应该会了解加载模板的工作原理。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-14
          • 1970-01-01
          • 1970-01-01
          • 2018-08-19
          相关资源
          最近更新 更多