2017-07-23 76 views
0

我有以下情形:createRecord未保存記錄的關係

創建多頁面表單中記錄

routes/feedback.js 
model() { 
    return this.get('store').createRecord('feedback'); 
}, 

2-孩子的路線返回兩種型號,問題是

1父路由非相關模型,返回動態路線中顯示的多個問題。而答案,創建回答在其網頁這些問題記錄

routes/feedback/question.js 
model(params) { 
    return Ember.RSVP.hash({ 
     question: this.get('store').findRecord('question', params.question_id), 
     answer: this.get('store').createRecord('answer') 
    }) 

    }, 

3-回答有一個屬於關聯關係的反饋

models/answer.js 
choice: DS.attr(), // receives data from question through a controller 
feedback: DS.belongsTo() 

models/feedback.js 
submittedAt: DS.attr(), 
answers: DS.hasMany() 

4-數據從一個問題通過控制器

傳遞給一個答案記錄
controllers/feedback/question.js 
getChoice(choice) { 
    let answer = this.get('model.answer'); 
    let questionId = this.get('model.question').get('id'); 

    answer.setProperties({ 
    choice: choice, 
    questionId: questionId, 
    // feedback: should relationship go here? 
    }) 
    answer.save() 

controllers/feedback.js 
newModel: null, 
actions: { 
    save(newModel) { 
    newModel.save() 
    } 
} 

那麼如果feeback沒有ID,那麼如何分配關係呢?

也可以保存答案,直到保存反饋的newModel爲止?其實,我試圖將getChoice動作冒泡給父控制器,但同樣存在空記錄問題。

回答

0

你可以注入feedback控制器在feedback/question和訪問feedback模型和使用它。

feedback: Ember.inject.controller('feedback') 

let answer = this.get('model.answer'); 
    let questionId = this.get('model.question').get('id'); 
    let feedback = this.get('feedback').get('model'); 

    answer.setProperties({ 
    choice, 
    questionId, 
    feedback 
    }) 

- 或獲得來自反饋控制器的反饋記錄,就可以在反饋/問題航線使用this.modelFor('feedback')

routes/feedback/question.js 
model(params) { 
    return Ember.RSVP.hash({ 
     question: this.get('store').findRecord('question', params.question_id), 
     answer: this.get('store').createRecord('answer'), 
     feedback: this.modelFor('feedback') 
    }) 
    }, 

let answer = this.get('model.answer'); 
    let questionId = this.get('model.question').get('id'); 
    let feedback = this.get('feedback'); 

    answer.setProperties({ 
    choice, 
    questionId, 
    feedback 
    }) 
+0

是,回答現在知道關係p反饋。但是,當保存反饋時,它將答案顯示爲一個空陣列。 – Kareem

+0

我試圖pushObject的答案,而不是保存,但錯誤是:「無法讀取未定義的屬性'modelName'」。 (答案)=> {answers.pushObject(answer.setProperties(...))})' – Kareem

+0

在保存'feedback'之前,您可以將'answer'記錄更新爲反饋記錄使用pushObject。像'feedback.get('answers')。pushObject(答案)'..我以前沒有這樣做過。你可以閱讀https://guides.emberjs.com/v2.14.0/models/relationships/ – kumkanillam