我有一个问题,我有一个新路由的资源。当我转换到新路线时,我创建了一个新对象。在表单上我有取消按钮,删除该对象。但是,如果我单击导航上的链接,说回到资源索引,那么该对象与我在表单中放置的内容一致。管理创建对象然后离开表单的最佳方法是什么?
我的路线:
App.Router.map(function() {
this.resource('recipes', function() {
this.route('new');
this.route('show', { path: '/:recipe_id' });
});
this.resource('styles');
});
App.RecipesNewRoute = Ember.Route.extend({
model: function() {
return App.Recipe.createRecord({
title: '',
description: '',
instructions: ''
});
},
setupController: function(controller, model) {
controller.set('styles', App.Style.find());
controller.set('content', model);
}
});
我的新路线控制器:
App.RecipesNewController = Ember.ObjectController.extend({
create: function() {
this.content.validate()
if(this.content.get('isValid')) {
this.transitionToRoute('recipes.show', this.content);
}
},
cancel: function() {
this.content.deleteRecord();
this.transitionToRoute('recipes.index');
},
buttonTitle: 'Add Recipe'
});
我正在使用版本1.0.0.rc.1
谢谢!
答案 0 :(得分:2)
每次离开该路线时,您在路线的deactivate
方法中放置的任何代码都会被执行。如果用户未明确保存,则以下代码将删除新模型。
App.RecipesNewRoute = Ember.Route.extend({
// ...
deactivate: function() {
var controller = this.controllerFor('recipes.new');
var content = controller.get('content');
if (content && content.get('isNew') && !content.get('isSaving'))
content.deleteRecord();
},
// ...
});
作为额外的奖励,您现在无需在用户按下取消按钮时明确删除记录。