【发布时间】:2015-11-13 19:33:47
【问题描述】:
我正在使用 ember 2.0 和 ember-data 2.0,我一直在努力寻找将自定义 URL 传递给模型的方法。
例如,如果我的模型名为 Person 并存储在 model/person.js 文件中,我希望用于查找记录的其余 Web 服务 url 为 xxx/user/1,或者换句话说,为了避免约定,并通过我的休息服务网址 - 有可能吗?
【问题讨论】:
标签: ember.js ember-data
我正在使用 ember 2.0 和 ember-data 2.0,我一直在努力寻找将自定义 URL 传递给模型的方法。
例如,如果我的模型名为 Person 并存储在 model/person.js 文件中,我希望用于查找记录的其余 Web 服务 url 为 xxx/user/1,或者换句话说,为了避免约定,并通过我的休息服务网址 - 有可能吗?
【问题讨论】:
标签: ember.js ember-data
您可以使用适配器。
如果您的后端约定与 Ember Data 约定不同,可以通过换出或扩展默认适配器轻松更改其功能。
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'api/v1',
pathForType: function(type) {
return Ember.Inflector.inflector.singularize(type);
}
});
如果您只想覆盖特定模型,只需使用 modelName + Adapter 编写新适配器即可。
当我想为“笔记”模型使用自定义适配器时,我可以执行以下操作:
App.Note = DS.Model.extend({
title: DS.attr('string'),
/* others attrs */
});
App.NoteAdapter = DS.RESTAdapter.extend({
namespace: 'other/endpoint',
pathForType: function(type) {
return Ember.Inflector.inflector.pluralize(type);
}
});
看看ember adapter guide,如果你使用 ember-cli 使用蓝图生成器,比如:
ember generate adapter user
【讨论】: