【发布时间】:2016-04-27 22:55:13
【问题描述】:
我在加载 belongsTo 关系时遇到问题 - 没有显示错误,也没有发送请求。 UI 只是保持空白。给定以下模型:
project.js 从“ember-data”导入 DS;
export default DS.Model.extend({
name: DS.attr(),
items: DS.hasMany('line-item', {async: true}),
customer: DS.belongsTo('customer', {async: false})
});
customer.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr(),
email: DS.attr(),
projects: DS.hasMany('project', {async: true})
});
project和customer之间存在关系。访问项目端点时,项目会正确返回:
{
"data":{
"type":"projects",
"id":"3861b834-e270-4296-b7be-9aca55676874",
"attributes":{
"created":"2016-04-27T22:36:01.061349Z",
"modified":"2016-04-27T22:36:01.061477Z",
"name":"Sample name",
},
"relationships":{
"customer":{
"data":{
"type":"customers",
"id":"9242bd41-6bb0-41ed-b5f3-21df26486d9e"
}
},
"items":{
"meta":{
"count":0
},
"data":[
]
}
}
}
}
但是,当尝试访问客户时,什么也没有发生(我的意思是:没有控制台输出,没有对客户端点的请求等。UI 无法加载):
this.get('project').get('customer');
访问其他属性有效(包括项目的项目)。
知道我哪里出错了吗?
【问题讨论】:
-
我相信既然关系是异步的,那么 get 就会返回一个承诺。
project.get('customer').then((customer) => { // now we can work with the customer }); -
谢谢新。不幸的是,这不起作用 - 问题似乎是
project.get('customer')- 这是它失败的地方。 -
返回值是未定义还是实际上是什么?
-
不,什么都没有——没有返回值。它似乎在试图吸引客户方面失败了。
-
有几件事。当您访问路由或仅通过访问 API 时,您在 Chrome 中的网络选项卡上发布的 json 是什么?另外,你能发布你的路线代码吗?
标签: ember.js ember-data ember.js-2