为未保存记录的关系创建记录
createRecord for relationship of unsaved record
我有以下场景:
1-为多页表单创建记录的父路由
routes/feedback.js
model() {
return this.get('store').createRecord('feedback');
},
2-子路由return两个模型,问题是不相关的模型return动态路由中显示的多个问题。并在其页面中创建回答这些问题的记录
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- 答案有 belongsTo 关系反馈
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,应该如何分配关系呢?
我也可以在保存反馈的新模型之前保存答案吗?实际上,我尝试将 getChoice 操作冒泡到父控制器,但同样的空记录问题。
您可以在 feedback/question
中注入 feedback
控制器并访问 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
})
- 或者从反馈控制器获取反馈记录,可以在feedback/question route
中使用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
})
我有以下场景:
1-为多页表单创建记录的父路由
routes/feedback.js
model() {
return this.get('store').createRecord('feedback');
},
2-子路由return两个模型,问题是不相关的模型return动态路由中显示的多个问题。并在其页面中创建回答这些问题的记录
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- 答案有 belongsTo 关系反馈
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,应该如何分配关系呢?
我也可以在保存反馈的新模型之前保存答案吗?实际上,我尝试将 getChoice 操作冒泡到父控制器,但同样的空记录问题。
您可以在 feedback/question
中注入 feedback
控制器并访问 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
})
- 或者从反馈控制器获取反馈记录,可以在feedback/question route
中使用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
})