(Ember 2,如果重要的话)
我想在ember页面上显示搜索结果列表。我使用的api基本上只返回特定记录类型的id和名称列表(让我们称之为foo)。不幸的是,我还需要获得每个项目的缩略图,搜索结果路线不提供它。搜索结果模型由几个属性的列表组成,每个属性只是DS.hasMany
到不同的模型,例如,
foos: DS.hasMany('foo', {
async: true
}),
bars: DS.hasMany('bar', {
async: true
}),
从服务器返回的数据如下所示:
{
"actions": [{
... irrelevant
}],
"data": {
"foos": [{
"id": "test",
"name": "test"
}],
"meta": {
"total": 1
}
}
}
Foo的模型有很多属性,包括name
,thumbnailURI
等。
当我尝试在模板中使用{{foo.image}}
时,该属性未定义;我希望商店能够获取foo/test
的模型,因为它缺少图像属性,但事实并非如此。我该怎么做告诉Ember-嘿,服务器上的项目列表没有得到你需要的所有属性;请通过/api/foo/test
,/api/foo/test2
等等向服务器询问每个项目的数据。
答案 0 :(得分:2)
var xAxisScale = d3.scaleTime()
.domain([new Date(min, 0, 1, 0), new Date(max, 0, 1, 0)])
.rangeRound([100,width])
xAxisScale.ticks(d3.timeYear.every(1));
对于部分加载模型不好。最好的方法是将模型分成两部分。一个ember-data
模型和一个normal
模型。
然后您可以在适配器/序列化器中解决此问题。
通常不清楚您使用的是哪个适配器/对,但我们假设您拥有模型detail
和foo
:
<强> FOO 强>
foo-detail
<强> FOO细节强>
name: DS.attr('string'),
detail: DS.belongsTo('foo-detail'),
bars: DS.hasMany('bar'),
然后image: DS.attr('string'),
的序列化程序必须返回如下内容:
foo
当您访问{
data: [{
id: 'test',
type: 'foo',
attributes: {
name: 'first foo'
},
relationships: {
"foo-detail": {
links: {
related: '/foo/test'
}
}
}
},{...}]
}
时,这会强制要求/foo/test
。接下来,您必须确保{{fooInstance.detail.image}}
的序列化程序将返回此信息:
foo-detail