繁体   English   中英

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

[英]ember.js discard created model if not saving

我在这里按照教程的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');
    }
  }
});

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM