首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未保存记录关系的createRecord

未保存记录关系的createRecord
EN

Stack Overflow用户
提问于 2017-07-23 08:05:52
回答 1查看 99关注 0票数 0

我有以下情况:

创建多页窗体记录的父路由。

代码语言:javascript
复制
routes/feedback.js
model() {
  return this.get('store').createRecord('feedback');
},

2-返回两个模型的子路由,问题是在动态路径中返回多个问题的非相关模型。并在其页面中创建回答这些问题的记录。

代码语言:javascript
复制
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关系反馈

代码语言:javascript
复制
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-通过控制器将问题传递给应答记录的数据。

代码语言:javascript
复制
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操作泡到父控制器,但同样的问题是null记录。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-24 03:07:56

您可以将feedback控制器注入到feedback/question中,并访问feedback模型并使用它。

代码语言:javascript
复制
feedback: Ember.inject.controller('feedback')

代码语言:javascript
复制
  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')
代码语言:javascript
复制
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')
    })
  },

代码语言:javascript
复制
  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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45262882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档