如何在不加载关联的情况下获得Ember中的关联ID?

时间:2014-04-24 17:53:39

标签: ember.js ember-data

我正在尝试使用Ember.Select视图类,我正在寻找一种方法来检索关联的id而不加载完整模型。

我使用的是Ember Data 1.0.0-beta.7。我的房产模型如下:

var attr = DS.attr;

App.Property = DS.Model.extend({
    neighborhood: DS.belongsTo('neighborhood'),
    name: attr()
});

我的有效负载示例如下所示:

{"property": neighborhood: 5, name: "Foo"}

我只需要邻域的id,以便将其传递给select view value属性,以便可以选择它。我不想加载完整的邻域有效负载,因为我只需要id。

有没有办法在不改变我的模型的情况下做到这一点?

2 个答案:

答案 0 :(得分:0)

尝试使用property._data.neighborhood.id。有效负载数据存储在记录的_data哈希中,但实际上并不建议使用它们!

我有一个类似的用例 - 我想检查记录是否有父母,但我实际上并不想在我呈现列表时检索父母。 Ember变得疯狂并提出100个请求,这不是完全可取的!

答案 1 :(得分:0)

您可以直接在计算函数中检查belongsTo关系。

import Ember from 'ember';
var attr = DS.attr;

App.Property = DS.Model.extend({
    neighborhood: DS.belongsTo('neighborhood'),
    name: attr(),

    neighborhoodId: Ember.computed(function(){
        return this.belongsTo('neighborhood').id();
    }).volatile()
});

使计算属性volatile意味着每次调用时都会重新计算它 - 不仅仅是在新数据进入时。这样,在模型完全没有之前,你总是得到一个无效值加载。