我的帖子创建路线设置了保存事件。
App.PostsNewRoute = Ember.Route.extend({
model: function(){
return App.Post.createRecord();
},
exit: function() {
this._super();
this.get('currentModel.transaction').rollback();
},
setupController: function(controller, model){
controller.set('content', model);
},
events: {
save: function(post){
post.one('didCreate', this, function(){
this.transitionTo('posts.show', post);
});
post.get('transaction').commit();
},
cancel: function(){
this.transitionTo('posts.index');
}
}
});
这是我的帖子模型。
App.Post = DS.Model.extend({
body: DS.attr('string'),
headline: DS.attr('string')
});
如您所见,它在创建帖子后转换为show route。我遇到了一个问题,因为帖子的id未定义(它是在数据库中创建对象后定义的),转换会将url更改为/ null。这似乎合乎逻辑,但显然不理想。
转换到新帖子ID的最佳方法是什么?我在创建它之后返回整个对象(包含ID)。好像Ember没有看到我正在回归的新物体。
答案 0 :(得分:2)
我遇到了这个问题。 https://github.com/emberjs/data/issues/405看起来didCreate事件在更新对象之前触发。我使用的解决方法只是为有问题的id设置一个观察者。然后didCreate会开火,当id被更新时,我的观察者开火了,在那个观察者中我完成了向演出路线的过渡。