2

我用我的帖子创建路线设置了一个保存事件。

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

如您所见,它在帖子创建后过渡到显示路线。我遇到了一个问题,由于帖子的 id 未定义(它是在数据库中创建对象后定义的),因此转换将 url 更改为 /null 。这似乎合乎逻辑,但显然并不理想。

过渡到新帖子 id 的最佳方法是什么?我在创建后返回整个对象(包括 ID)。似乎 Ember 没有看到我要返回的新对象。

4

1 回答 1

2

我遇到了这个。 https://github.com/emberjs/data/issues/405看起来 didCreate 事件在对象更新之前触发。我使用的解决方法只是为有问题的 id 设置一个观察者。然后 didCreate 会触发,当 id 更新时,我的观察者触发了,并且在那个观察者中我做了到 show 路由的转换。

于 2013-02-27T21:55:14.903 回答