Javascript Can';t在模板(EmberJS)中使用相关模型
这就是我所拥有的。Javascript Can';t在模板(EmberJS)中使用相关模型,javascript,ember.js,handlebars.js,ember-data,ember-cli-mirage,Javascript,Ember.js,Handlebars.js,Ember Data,Ember Cli Mirage,这就是我所拥有的。 2个型号:“注意”和“用户”。Note有一个名为“user”的字段,该字段使重放成为“1个用户到多个notes”。这些数据来自海市蜃楼 注:型号: export default DS.Model.extend({ subject: DS.attr(), message: DS.attr(), user: DS.belongsTo('user'), created_at: DS.attr(), updated_at: DS.attr(),
2个型号:“注意”和“用户”。Note有一个名为“user”的字段,该字段使重放成为“1个用户到多个notes”。这些数据来自海市蜃楼 注:型号:
export default DS.Model.extend({
subject: DS.attr(),
message: DS.attr(),
user: DS.belongsTo('user'),
created_at: DS.attr(),
updated_at: DS.attr(),
});
用户模型:
export default DS.Model.extend({
username: DS.attr(),
email: DS.attr(),
notes: DS.hasMany('note'),
});
幻影代码:
let notes = [
{
id: 1,
type: 'note',
attributes: {
subject: 'Test 1',
message: 'tttttttttttttttttttttttt',
user_id: 1,
'created-at': '2017-03-10 15:04:22',
'updated-at': '2017-03-10 15:04:22',
}
},
{
id: 2,
type: 'note',
attributes: {
subject: 'Test 2',
message: 'klakljadlfkjhasdflij',
user_id: 1,
'created-at': '2017-02-10 15:04:22',
'updated-at': '2017-02-10 15:04:22',
}
}
];
let users = [
{
id: 1,
type: 'user',
attributes: {
username: 'user',
email: 'user@email.com',
}
}
];
this.get('/notes/:id', function (db, request) {
let note = notes.find((note) => parseInt(request.params.id) === note.id);
let result = {
data: note
};
if (request.queryParams.include === 'user') {
result.included = [users.find((user) => parseInt(note.attributes.user_id) === user.id)];
}
return result;
});
将检索用户模型(如我在EmberInspector上看到的)。当我在模板内部使用
{{model.user.username}}
时,有空输出。当我使用
{{log model.user}
时,有一个空的“user”模型
我认为这个问题可能与这样一个事实有关,即在我构建注释列表时,在没有“用户”模型的情况下提前检索了“注释”模型
非常感谢你的帮助 您的问题是使用了
JSONAPISerializer
,但您的响应不符合JSONAPI。JSONAPI预计:
{
data: {
id: 1,
type: 'note',
attributes: {
subject: 'Test 1',
message: 'tttttttttttttttttttttttt',
'created-at': '2017-03-10 15:04:22',
'updated-at': '2017-03-10 15:04:22',
},
relationships: {
user: {
data: {
type: 'user'
id: '1'
}
}
}
}
}
然后加载用户的id
1
但你的回答是:
{
data: {
id: 1,
type: 'note',
attributes: {
subject: 'Test 1',
message: 'tttttttttttttttttttttttt',
user_id: 1,
'created-at': '2017-03-10 15:04:22',
'updated-at': '2017-03-10 15:04:22',
}
}
}
因此ember data
认为此便笺没有用户。阅读JSONAPI以了解所需的响应。您使用的是什么序列化程序?@Lux,JSONAPISerializerI不知道这是否重要,但我将尝试使用RESTSerializer作为开发的下一步之一