2013-02-26 21 views
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似乎沒有看到我要返回的新對象。

+0

你可以用你的問題創建一個jsfiddle嗎? – 2013-02-27 13:46:07

+0

這很難演示,因爲它與我的服務器上調用RESTful方法有部分關係。這很困難,因爲我在我的服務器上創建了一個新記錄。問題是我沒有爲該記錄設置一個ID,直到我將記錄提交給服務器(換句話說,Ember從來沒有聽說過這個ID--它是在數據庫中創建的,而不是在客戶端上創建的)。因此,當我轉換到新記錄時,該記錄的ID爲空,因此它在URL中顯示爲空。我不確定我是否以最好的方式處理這個問題。我將使用更多的路由代碼更新我的帖子。 – sentinel21 2013-02-27 16:37:51

回答

2

我遇到了這個問題。 https://github.com/emberjs/data/issues/405看起來像didCreate事件在更新對象之前觸發。我使用的解決方法只是爲有問題的id設置一個觀察者。然後didCreate會開火,當id被更新時,我的觀察員開了火,在那個觀察者中,我做了向show route的過渡。

相關問題