指定可以找到模型数据的URL

时间:2013-08-21 07:21:42

标签: ember.js ember-data

我有这些模特:

App.Profile = DS.Model.extend({
    name  : DS.attr('string'),
    type  : DS.attr('string')
});

App.User = App.Profile.extend({
    email : DS.attr('string')
});

App.Company = App.Profile.extend({
    vat : DS.attr('string')
});

App.Profile.FIXTURES = [
    { id: 'me',         type: 'user'   , name: 'Max Smith',        email: 'max.smith@email.com'},
    { id: 'my-company', type: 'company', name: 'Good Company Inc', vat: 'B456DF' },
];

UserCompany的数据可在Profile FIXTURE中找到。如何配置UserCompany模型以使用该公共FIXTURE?这将做:

App.User.FIXTURES = App.Profile.FIXTURES;

因为我想要真正拥有一个单一且通用的端点,所以不要伪造它复制灯具。

我的真正目标是能够访问同一网址中UserCompany个对象的后端:/api/profile;如果有人可以澄清这一点,FIXTURE问题是次要的(我只是对它感兴趣才能使jsbin工作)

修改

对于ember-data,可以配置API global endpointmodel pluralization。但我想要配置的是在全局api命名空间中找到每个模型的位置。也就是说,我不希望ember-data根据模型名称推断API端点,但我想明确配置它。

这可能吗?

1 个答案:

答案 0 :(得分:0)

我认为目前ember-data没有那个选项,所以我的兴奋就是使用ember model,因为它更灵活,你可以为每个类配置一个适配器。

App.Profile = Ember.Model.extend({
    name  : Ember.attr(),
    type  : Ember.attr()
});

App.User = Ember.Profile.extend({
    email : Ember.attr()
});

// when using fixtures
App.User.adapter = Ember.FixtureAdapter.create();

// or when using rest adapter
App.User.url = '/api/profile';
App.User.adapter = Ember.RESTAdapter.create();

App.Company = Ember.Profile.extend({
    vat : Ember.attr()
});

// when using fixtures
App.Company.adapter = Ember.FixtureAdapter.create();

// or when using rest adapter
App.Company.url = '/api/profile';
App.Company.adapter = Ember.RESTAdapter.create();

// When using fixtures
// I think that this cannot be avoided
App.User.FIXTURES = App.Company  = [
    { id: 'me',         type: 'user'   , name: 'Max Smith',        email: 'max.smith@email.com'},
    { id: 'my-company', type: 'company', name: 'Good Company Inc', vat: 'B456DF' },
];