2013-08-17 45 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