【发布时间】:2014-04-04 19:04:59
【问题描述】:
我在 ember 中有一个模型,部分看起来像这样:
opt1votes: DS.hasMany('subscriber'),
opt2votes: DS.hasMany('subscriber'),
opt3votes: DS.hasMany('subscriber'),
opt4votes: DS.hasMany('subscriber'),
opt5votes: DS.hasMany('subscriber'),
keyword: DS.belongsTo('keyword'),
winAttachment: DS.belongsTo('asset'),
followAttachment: DS.belongsTo('asset'),
attachment: DS.belongsTo('asset'),
当此模型没有将 id 分配给 winAttachment、followAttachment 和附件属性时会出现问题(这些在系统中是可选的)。 ember 没有为这些属性加载任何内容,而是联系我们的 api 并获得以下响应:
{"asset":[]}
这导致创建了 3 个“资产”模型,所有属性为“未定义”:http://screencloud.net/v/nZDD
我的问题是为什么没有 id 的 ember 加载以及如何停止?我是否应该为空模型请求返回不同的内容,以便 ember 知道模型不完整?
感谢所有帮助!
编辑:来自对象的原始 JSON:
{
"campaign": [
{
"id": 360,
"name": "aa test",
"message": "Thanks",
"followMessage": "",
"followTime": "",
"opt1": "",
"opt2": "",
"opt3": "",
"opt4": "",
"opt5": "",
"opt1votes": [],
"opt2votes": [],
"opt3votes": [],
"opt4votes": [],
"opt5votes": [],
"singleEntry": false,
"winnerNumber": "",
"winningMessage": "",
"winners": [],
"tagIds": "",
"campaignType": "Response",
"starred": false,
"draft": false,
"completed": false,
"archived": false,
"optins": 0,
"optouts": 0,
"keyword": 352,
"paused": false,
"startDate": 1396475400,
"startDateDisplay": "Apr 02, 2014 4:50PM",
"percentComplete": 0,
"created": "Wednesday, Apr 2 2014 4:49PM",
"attachment": "",
"followAttachment": "",
"winAttachment": "",
"entryQuota": 0,
"createdSorting": 1396475366,
"subLists": "",
"subs": "",
"endCampaign": false,
"pageUrl": "http://l.gocella.com/T1d0NM5",
"sentAllTime": 0,
"sentThirtyDays": 0,
"sentNinetyDays": 0,
"votesAllTime": 0,
"votesThirtyDays": 0,
"votesNinetyDays": 0,
"entriesAllTime": 0,
"entriesThirtyDays": 0,
"entriesNinetyDays": 0,
"followsSentAllTime": 0,
"followsSentThirtyDays": 0,
"followsSentNinetyDays": 0
}
]
}
这个对象在模型中就有了belongsTo关系
【问题讨论】:
-
你能显示返回的原始 json 吗?
-
你能把这个做成一个jsbin吗?我怀疑这可能是您未在此处显示的某些代码的问题?
-
@kingpin2k 是的,我已经把它放在问题中,因为它对 cmets 来说太长了
-
您将在 JSON 中看到 "attachment":"","followAttachment":"","winAttachment":""。我们没有发回 ID,但是 ember 正在尝试加载它们,导致“未定义”
-
通过过滤掉任何没有 ID 的模型,我们能够让这些空模型停止加载到我们的下拉菜单中,但 ember 仍在尝试查找没有 ID 的模型。它不会对任何其他有关系但没有 ID 的属性执行此操作。
标签: ember.js ember-data