/ / Як видалити щойно створену модель за допомогою даних Ember? - ember.js, ember-data

Як видалити новостворену модель за допомогою даних Ember? - ember.js, ember-дані

Я реалізую подання для створення нового користувача.

App.UserNewRoute = Ember.Route.extend({
model : function(params) {
return this.store.createRecord("user");
}
});

На UserNewController є метод, який запускається, якщо користувач натискає кнопку скасування.

App.UserNewController = Ember.ObjectController.extend({
//... code
actions: {
//.. other actions
cancel: function(){
var model = this.get("model");
model.destroyRecord();
this.transitionToRoute("users");
}
}
});

Я завжди отримую таку помилку:

Uncaught Error: Attempted to handle event `willCommit` on <App.User:ember751:null> while in state root.deleted.saved.

Я спробував скористатися альтернативою:

  model.deleteRecord();
model.save();

Я отримую таку ж помилку.

Що я роблю неправильно?

Відповіді:

1 для відповіді № 1

Проблема може бути пов’язана з тим, що model.destroyRecord () повертає обіцянку, і що ви переходите до виконання цієї обіцянки. Я використовував наступне:

var model = this.get("model");
var _this = this;

// assuming you are working with a new model and not on say an edit page
// this will delete the new record and once the promise returns will transition routes
if (model.get("isNew")) {
model.destroyRecord().then(function() {
_this.transitionToRoute("route name");
}
}

Таким чином, перехід відбувається лише після того, як обіцянка буде виконана. Я все ще вугільний скраб, але я думав, що це не зашкодить.


0 для відповіді № 2

Відповідно до цього https://github.com/emberjs/data/issues/1669, проблема може бути виправлена ​​в нових версіях Ember. Я використовую Ember version 1.5.1 і Ember-Data version 1.0.0-beta.6

Обхідним шляхом було зробити a dirty перевірити

var model = this.get("model");
model.deleteRecord();
if (model.get("isDirty")) {
model.save();
}
this.transitionToRoute("users");