Эмбер не показывает данные поля внешнего ключа - PullRequest
0 голосов
/ 01 ноября 2018

У меня четыре модели

//models/exam.js

name: attr('string'),
owner: belongsTo('user'),


//models/question.js

content: attr('string'),
exam: belongsTo('exam')


//models/answer.js

owner: belongsTo('user'),
question: belongsTo('question'),
answer: attr('string'),
remarks: attr('string'),
exam: belongsTo('exam')


//models/user.js

owner : attr('string'),
email : attr('string'),
password : attr('string'),

Я загружаю модели в маршрут. Затем, когда я запускаю следующий код шаблона,

{{#each model.answers as |ans|}}
<p>{{ans.question.content}}</p>
{{/each}}

// route.js

import Route from '@ember/routing/route';
import { hash } from 'rsvp';

export default Route.extend({
    model: function(params){
        return hash({
            student: this.store.findRecord('student',params.id),
            answers: this.store.query('answer',{
                owner: params.id
            }),
        });
    }
});

показывает вывод следующим образом

<frontend@model:question::ember276:5>
<frontend@model:question::ember281:6>
<frontend@model:question::ember286:4>

почему он показывает такой код, почему не показывает исходный контент?

1 Ответ

0 голосов
/ 01 ноября 2018

Я думаю, что вы столкнулись с очень особенным и редким случаем. Содержание имеет особое значение для отношений. Это внутренний материал, и конечный пользователь не должен иметь с этим дело. Но это причина, почему вы получаете

<frontend@model:question::ember276:5>

для

{{ans.question.content}} {{!-- .content doesn't return the content attribute --}}

Я бы обойти это, изменив имя атрибута на сервере и ember-model. Если имя сервера не является изменяемым, я бы настроил сериал ember. I.e.:

//app/serializers/person.js (ember g serializer question)
import DS from 'ember-data';

export default DS.JSONAPISerializer.extend({
  attrs: {
    questionContent: 'content' //map server's attribute content to ember-model's questionContent
  }
});
...