Ember装载机上的模型保存

时间:2016-09-26 07:14:29

标签: ember.js

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

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

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

1 个答案:

答案 0 :(得分: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);
      });
   },
  },
})