0
我有一个像这样的“loans /:loan_id”的路由,我从一个链接重定向到这个URL并发送一个未保存的Loan对象作为模型,所以id为null,这会导致url是“loans/null”,但是我保存模型并从服务器获取ID,但是如何更新URL以便显示新ID而不是null?修改模型后的更新URL
谢谢。
我有一个像这样的“loans /:loan_id”的路由,我从一个链接重定向到这个URL并发送一个未保存的Loan对象作为模型,所以id为null,这会导致url是“loans/null”,但是我保存模型并从服务器获取ID,但是如何更新URL以便显示新ID而不是null?修改模型后的更新URL
谢谢。
我假设你有一个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的内容。
这个答案主要基于假设,因为你没有透露太多的代码,但你明白了我的观点。
希望它有帮助。
谢谢!但是这会在浏览器历史记录中创建一个条目吗?我之前尝试过使用loan.one('didCreate')事件的transitionTo,但是当我在浏览器中按下时会将我返回到空URL,导致应用程序中出现一些意外行为。 – ryudice
您可以使用'replaceWith'而不是'transitionTo'来避免这个问题... – vitch