Javascript 余烬3.5属于未解决的关系
我以前有emberjs 1.13,我升级到了3.5 我在belongsTo关系中遇到问题,无法访问其中的数据。我的代码如下 模型 内部控制器Javascript 余烬3.5属于未解决的关系,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我以前有emberjs 1.13,我升级到了3.5 我在belongsTo关系中遇到问题,无法访问其中的数据。我的代码如下 模型 内部控制器 this.get('model.published') working this.get('model.author.name') not working 但同样的代码在emberjs的1.13上运行 使用余烬数据1.13 与余烬数据3.5 这是一个从1.13直接升级到3.5的大升级 很多事情都改变了。为了充分理解什么发生了变化以及为什么发生了变化
this.get('model.published') working
this.get('model.author.name') not working
但同样的代码在emberjs的1.13上运行
使用余烬数据1.13
与余烬数据3.5
这是一个从1.13直接升级到3.5的大升级 很多事情都改变了。为了充分理解什么发生了变化以及为什么发生了变化,我强烈建议您每次升级次要或主要版本时都阅读这些内容。非常有用 很可能未将
作者
加载到存储中。检查路线的模型()
、网络请求和余烬检查器(如果数据已加载)
如果加载,它可能是async:true
。尝试删除它吗
这是Ember 3.5中的一个工作示例:
app/models/thing.js
:
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { belongsTo } from 'ember-data/relationships';
export default Model.extend({
// Attributes
title: attr('string'),
description: attr('string'),
published: attr('string'),
publishedAt: attr('string'),
// Relationships:
// No need for async: true
course: belongsTo('course'),
author: belongsTo('author')
});
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
export default Model.extend({
name: attr('string')
});
app/models/author.js
:
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { belongsTo } from 'ember-data/relationships';
export default Model.extend({
// Attributes
title: attr('string'),
description: attr('string'),
published: attr('string'),
publishedAt: attr('string'),
// Relationships:
// No need for async: true
course: belongsTo('course'),
author: belongsTo('author')
});
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
export default Model.extend({
name: attr('string')
});
app/route/thing.js
import Route from '@ember/routing/route';
export default Route.extend({
model(params) {
// Assuming you use JSON API
// Make sure `author` is included when fetching `thing`
return this.store.query('thing', {
include: 'author, course'
}),
}
});
import Controller from '@ember/controller';
export default Controller.extend({
init(){
console.log(this.model.author.name)
}
});
app/controllers/thing.js
import Route from '@ember/routing/route';
export default Route.extend({
model(params) {
// Assuming you use JSON API
// Make sure `author` is included when fetching `thing`
return this.store.query('thing', {
include: 'author, course'
}),
}
});
import Controller from '@ember/controller';
export default Controller.extend({
init(){
console.log(this.model.author.name)
}
});
作者
是否已加载?你能在旋转中复制吗?这看起来不错,应该能用。你能给我们看看你的路线模型()
,路线模板,路线控制器和作者模型吗?看来作者还没有出现在商店里。也许删除异步?非常感谢您的详细回答。但这并不能解决我获得作者的问题。关于你们的更多信息,我已经升级了1.13->2.18->3.5,但问题也出现在2.18中。我已经在stackoverflow中重新编写了一个详细的问题。如果你能看一看,我将不胜感激