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

ember.js discard created model if not saving

本文关键字:创建 模型 保存 Ember js 如果不      更新时间:2023-09-26

我遵循了教程的三个部分,除了一个例外,一切都很好。当我转到"添加图书"页面,然后在没有保存的情况下导航到"图书列表"时,图书列表会被一个空项扩展。我怀疑原因是下面的代码,其中新模型是在保存之前创建的,如果不保存表单则不会删除。有什么办法解决这个问题吗?

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');
    }
  }
});

From 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();
},

我通过向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');
    }
  }
});