2016-01-31 28 views
1

我有以下用例:'我在控制器的動作處理程序中創建資源'項目',之後我想轉換到新創建的route'。我的意圖看起來是這樣的:如何獲取新創建的記錄的引用?

createNewProject: function() { 
    this.store.createRecord('project', { 
     title:     this.get('title'), 
     description:    this.get('description'), 
     full_description:   this.get('full_description') 
    }).then((project) => { 
     this.transitionToRoute('projects.show', project); 
    }); 
    } 

,但它不喜歡的工作,因爲createRecord沒有返回promise據我知道,也許還有周圍的一些工作?

謝謝你的幫助。

回答

2

createRecord返回記錄本身,因爲它不需要做網絡請求。 要執行網絡請求,您需要在新記錄上調用.save(),並返回一個承諾。這會工作,但不會將您的記錄保存到服務器:

createNewProject: function() { 
    let project = this.store.createRecord('project', { 
    title:     this.get('title'), 
    description:    this.get('description'), 
    full_description:   this.get('full_description') 
    }) 

    this.transitionToRoute('projects.show', project); 
} 

要調用transitionToRoute之前保存您的通話記錄project.save()。這將保存您的記錄異步並立即轉換到新的Route。等待成功保存在做轉換之前做到這一點。

project.save().then(() => this.transitionToRoute(project)); 
+2

繼續你所說的關於保存記錄的服務器,你的意思是這樣的'''project.save(),然後((項目)= > { this.transitionToRoute('projects.show',project); });''' – SuperManEver

相關問題