Ember 不显示外键字段数据
Ember not showing foreign key field data
我有四个模型
//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>
为什么显示这样的代码,为什么不显示原来的内容?
我认为你遇到了一个非常特殊和罕见的案例。该内容对 ember 关系具有特殊意义。那是内部的东西,最终用户不应该处理它。但这就是你得到
的原因
<frontend@model:question::ember276:5>
为了
{{ans.question.content}} {{!-- .content doesn't return the content attribute --}}
我会通过更改服务器和 ember-model 的属性名称来解决这个问题。如果我的服务器属性名称不可变,我会自定义 ember-serializer。即:
//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
}
});
我有四个模型
//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>
为什么显示这样的代码,为什么不显示原来的内容?
我认为你遇到了一个非常特殊和罕见的案例。该内容对 ember 关系具有特殊意义。那是内部的东西,最终用户不应该处理它。但这就是你得到
的原因<frontend@model:question::ember276:5>
为了
{{ans.question.content}} {{!-- .content doesn't return the content attribute --}}
我会通过更改服务器和 ember-model 的属性名称来解决这个问题。如果我的服务器属性名称不可变,我会自定义 ember-serializer。即:
//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
}
});