如何处理ember

时间:2016-09-22 20:49:30

标签: ember.js

(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的模型有很多属性,包括namethumbnailURI等。

当我尝试在模板中使用{{foo.image}}时,该属性未定义;我希望商店能够获取foo/test的模型,因为它缺少图像属性,但事实并非如此。我该怎么做告诉Ember-嘿,服务器上的项目列表没有得到你需要的所有属性;请通过/api/foo/test/api/foo/test2等等向服务器询问每个项目的数据。

1 个答案:

答案 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模型。

然后您可以在适配器/序列化器中解决此问题。 通常不清楚您使用的是哪个适配器/对,但我们假设您拥有模型detailfoo

<强> 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