2014-10-10 38 views
0

我有一個提交使用jQuery後這樣的形式灰燼動作,灰燼創成到網址無法運作

submit : function(){ //submitting new story 
     this.set('onsubmit' , true); 
     var self = this; 
     $.post("/api/post", { some post data }) 
      .done(function(data) { 
       self.transitionTo('post' + data); 
      }); 
     } 

的網址是這樣的,域example.com。郵政位於example.com/api/post。發佈後,用戶必須重定向到example.com/post/3432232(某些值由發佈數據返回)。

但是在發佈此過渡到「example.com/api/post/5000203」而不是example.com/post/234234234之後。

哪個不存在,並給出了404。我怎樣才能讓用戶回到example.com/post/234234234使用轉換到功能在燼?

編輯 - 路線如下

App.Router.map(function() {  
this.resource('index', {path : '/'} , function() { 
    this.resource('p', function(){ 
     this.resource('post', { path: ':post_id' }); 
    }); 
}); 
}); 

感謝

回答

1

在餘燼路由系統transitionTo需要作爲參數路線的名稱和路由的型號(同型號,這條路線返回時Ember.Route。模型鉤子被調用)。在Ember的術語表中有兩種類型的路由器轉換:URL轉換(當客戶端處理新的URL(例如,當您從頭開始打開頁面時發生)和「命名轉換」(發生在調用this.tranisionTo時發生)。

Ember.Route嘗試在處理「URL轉換」時基於參數列表(例如post_id)加載模型。另一方面,當它處理「命名轉換」時,它不會調用模型鉤子,而是使用已經提供的模型(this.tranisition('post', PostModel)`)。 Docs

因此,如果您手上有post_id,只需調用this.store.find('post',postId)即可獲得PostModel並向PostRoute提供請求的模型:this.transitionTo('post', this.store.find('post', data)

P.S.請考慮閱讀這個問題和答案讓你的路由結構實際上嵌套:Nested URLs: issues with route transition

P.P.S.我看了一下Ember的文檔,發現新的(至少對我來說)transitionTo方法的簽名:http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo。根據此文檔,您可以重寫您的示例以使其正常工作:this.tranisitionTo('post', data),其中data是post_id。