ember 模型和相关适配器的 cli 命名约定
ember cli naming conventions for models and relative adapters
是否可以使用 geo-data
这样的模型名称?
让我解释一下
我有这样的模型
// app/models/geo-data.js
import DS from 'ember-data';
var geoData = DS.Model.extend({
name: DS.attr('string')
});
geoData.reopenClass({
FIXTURES: [
{
name: 'foo'
}
]
});
export default geoData;
那我有路线
// app/routes/index.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.find('geo-data');
}
});
和一个适配器
// app/adapters/geo-data.js
import DS from 'ember-data';
export default DS.FixtureAdapter.extend({});
但我的应用一直在尝试向 http://customhost.com/geoData
发送 GET 请求
- 首先它不应该执行任何请求,它在夹具适配器下
- 它将请求发送到
/geoData
而不是 /geo-data
我肯定遗漏了一些东西,请你指教我好吗?
谢谢
默认情况下,REST 适配器会将您的模型驼峰化和复数化以获取关联的端点。如果您想覆盖此功能,您可以覆盖适配器。有关所有文档,请参阅 http://emberjs.com/api/data/classes/DS.RESTAdapter.html#method_pathForType,但对于您的场景,如果您想保留破折号,您可以执行类似
的操作
export default DS.RESTAdapter.extend({
pathForType: function(type) {
var dasherized = Ember.String.dasherize(type);
return dasherized;
}
});
就夹具适配器发送请求的问题而言,这似乎很奇怪,但不应该。我确实注意到您的夹具数据没有 id
并且绝对应该。这是使用夹具适配器的示例。
http://emberjs.jsbin.com/firore/1/edit?html,css,js,output
App = Ember.Application.create();
App.Router.map(function() {
// put your routes here
});
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.find('foo');
}
});
App.FooAdapter = DS.FixtureAdapter.extend({});
App.FooModel = DS.Model.extend({
name: DS.attr()
});
App.FooModel.reopenClass({
FIXTURES: [
{
id: 1,
name: 'foo'
},
{
id:2,
name: 'bar'
}
]
});
我还要指出,我过去遇到过名为 'data' 的对象可能会导致意外行为的问题。
是否可以使用 geo-data
这样的模型名称?
让我解释一下
我有这样的模型
// app/models/geo-data.js
import DS from 'ember-data';
var geoData = DS.Model.extend({
name: DS.attr('string')
});
geoData.reopenClass({
FIXTURES: [
{
name: 'foo'
}
]
});
export default geoData;
那我有路线
// app/routes/index.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.find('geo-data');
}
});
和一个适配器
// app/adapters/geo-data.js
import DS from 'ember-data';
export default DS.FixtureAdapter.extend({});
但我的应用一直在尝试向 http://customhost.com/geoData
- 首先它不应该执行任何请求,它在夹具适配器下
- 它将请求发送到
/geoData
而不是/geo-data
我肯定遗漏了一些东西,请你指教我好吗? 谢谢
默认情况下,REST 适配器会将您的模型驼峰化和复数化以获取关联的端点。如果您想覆盖此功能,您可以覆盖适配器。有关所有文档,请参阅 http://emberjs.com/api/data/classes/DS.RESTAdapter.html#method_pathForType,但对于您的场景,如果您想保留破折号,您可以执行类似
的操作export default DS.RESTAdapter.extend({
pathForType: function(type) {
var dasherized = Ember.String.dasherize(type);
return dasherized;
}
});
就夹具适配器发送请求的问题而言,这似乎很奇怪,但不应该。我确实注意到您的夹具数据没有 id
并且绝对应该。这是使用夹具适配器的示例。
http://emberjs.jsbin.com/firore/1/edit?html,css,js,output
App = Ember.Application.create();
App.Router.map(function() {
// put your routes here
});
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.find('foo');
}
});
App.FooAdapter = DS.FixtureAdapter.extend({});
App.FooModel = DS.Model.extend({
name: DS.attr()
});
App.FooModel.reopenClass({
FIXTURES: [
{
id: 1,
name: 'foo'
},
{
id:2,
name: 'bar'
}
]
});
我还要指出,我过去遇到过名为 'data' 的对象可能会导致意外行为的问题。