使用this.store.filter和belongs_to模型的ID

时间:2015-06-10 23:36:31

标签: ember.js filter belongs-to

我试图检索给定帐户的所有布局。

/app/models/account.js

import DS from 'ember-data';

export default DS.Model.extend({
  companyName: DS.attr('string'),
  layouts: DS.hasMany('layout')
});

/app/models/layout.js

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  account: DS.belongsTo('account', { async: true })
});

/app/routes/layouts.js

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    return Ember.RSVP.hash({
      layouts: this.store.filter('layout', { account_id: 1 }, function(layout) {
        console.log(layout.get('account').content.id);
        return layout.get('account').content.id === 1;
      })
    });
  }
});

console.log行正在输出我期待的ID(1)。在Ember检查员中,我可以看到5个布局模型,并且属于&#39;属于&#39;我可以看到:account : <DS.PromiseObject:ember960>。单击该按钮会显示content : <batmics@model:account::ember600:1>并单击该按钮将显示属性,包括正确的ID。

但是在我的模板中layouts是空的......我不知道为什么。

顺便说一句,layouts: this.store.find('layout', { account_id: 1 })有效,但我需要它来使用过滤器,以便它是一个活动数组。

1 个答案:

答案 0 :(得分:0)

Ember Data将其所有ID用作字符串。

将支票更改为=== '1'可能会让您感觉良好。

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    return Ember.RSVP.hash({
      layouts: this.store.filter('layout', { account_id: 1 }, function(layout) {
        console.log(layout.get('account').content.id);
        return layout.get('account').content.id === '1';
      })
    });
  }
});