如果不保存,ember.js会丢弃创建的模型

时间:2014-06-17 10:38:59

标签: javascript ruby-on-rails ember.js

我已经按照教程here的3个部分进行了操作,一切正常,只有一个例外。当我去"添加书"页面,然后导航到"列出书籍"没有保存,书籍列表由空项扩展。我怀疑原因是以下代码,其中新模型在保存之前创建,如果不保存表单则不删除。任何想法如何解决这个问题?

Embertest.BooksNewRoute = Ember.Route.extend({
  model: function() {
    return this.get('store').createRecord('book');
  },
  actions: {
    create: function() {
      var newBook = this.get('currentModel');
      newBook.save();
      this.transitionTo('books');
    }
  }
});

2 个答案:

答案 0 :(得分:2)

来自http://emberjs.com/api/classes/Ember.Route.html#method_deactivate

在您的路线上添加deactivate功能。在退出当前路线之前调用此方法。因此,您可以回滚刚刚在模型中创建的记录,如下所示:

model: function(params) {
    return this.get('store').createRecord('book');
},

deactivate: function() {
    this.currentModel.rollback();
},

答案 1 :(得分:1)

我通过附加一个动作来解决这个问题,将记录销毁到willTransition事件,如下所示。如果这是正确的方法,有人会评论吗?

Embertest.BooksNewRoute = Ember.Route.extend({
  model: function() {
    return this.get('store').createRecord('book');
  },
  actions: {
    willTransition: function() {
      if (this.currentModel.get('isNew')) {
          this.get('currentModel').deleteRecord();
      };  
    },
    create: function() {
      var newBook = this.get('currentModel');
      newBook.save();
      this.transitionTo('books');
    }
  }
});