2013-08-17 118 views
0

我有一個像這樣的「loans /:loan_id」的路由,我從一個鏈接重定向到這個URL併發送一個未保存的Loan對象作爲模型,所以id爲null,這會導致url是「loans/null」,但是我保存模型並從服務器獲取ID,但是如何更新URL以便顯示新ID而不是null?修改模型後的更新URL

謝謝。

回答

1

我假設你有一個LoanNewController或類似的東西。然後我進一步假設你正試圖在創建它之後直接轉換到新創建的loan對象,這將顯示id爲null,因爲創建loan操作是異步的,並且您必須等待在後端你做轉換之前,所以爲了讓它工作,你可以做到以下幾點:

App.LoanNewController = Ember.ObjectController.extend({ 
    saveLoan: function() { 
    ... 
    this.get('store').commit(); 
    }, 
    ... 
    transitionAfterSave: function() { 
    if(this.get('content.id')) { 
     this.transitionToRoute('loan', this.get('content')); 
    } 
    }.observes(content.id) 

增加的觀察員將觀察content.id,當它被設置(當服務器調用返回)的transitionAfterSave將被調用並且轉換將獲得傳遞給它的具有正確ID的內容。

這個答案主要基於假設,因爲你沒有透露太多的代碼,但你明白了我的觀點。

希望它有幫助。

+0

謝謝!但是這會在瀏覽器歷史記錄中創建一個條目嗎?我之前嘗試過使用loan.one('didCreate')事件的transitionTo,但是當我在瀏覽器中按下時會將我返回到空URL,導致應用程序中出現一些意外行爲。 – ryudice

+0

您可以使用'replaceWith'而不是'transitionTo'來避免這個問題... – vitch