【问题标题】:Ember loader on Model save模型保存时的 Ember 加载程序
【发布时间】:2017-02-03 10:33:26
【问题描述】:

有没有办法在我们保存模型时显示加载模板。

当转换到不同的路线时,我可以使用应用程序级别的加载模板,但是当模型被保存时,加载模板不显示。

this.transitionTo('routeName') 将您带到 loading.hbs 直到它从服务器获得承诺,但是在执行 model.save() 时它没有显示。

【问题讨论】:

  • 只有在beforeModel, model, or afterModel`返回一个promise时才会显示加载子状态,如果你想在模型保存期间显示一些东西,你必须处理显示自定义加载器跨度>

标签: ember.js


【解决方案1】:

loading and error substates 仅在加载路由时使用。在控制器操作期间无法调用它们(除非该操作加载新路由,但在这种情况下,状态仍与加载新路由相关联,而不是操作)。

您仍然可以在使用属性和部分执行操作时显示加载模板:

模板:

<!-- templates/components/user-account.hbs -->
{{#if busy}}
  {{partial 'loading-template-name'}}
{{else}}
  {{!-- template content --}}
  <button {{action "save"}}>Save</button>
{{/if}}

组件:

// components/user-account.js
import Ember from 'ember';

export default Ember.Component.extend({
  actions: {
    save: function () {
      if (this.get('busy')) {
        return;
      }

      this.get('user').save()
      .then(() => {
        // handle success
      })
      .catch((e) => {
        // handle error
      })
      .finally(() => {
        this.set('busy', false);
      });
   },
  },
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多