簡體   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