ember cli模型和相对适配器的命名约定

时间:2015-01-19 15:51:57

标签: ember.js ember-data ember-cli

是否可以使用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请求
  1. 首先,它不应该执行任何请求,它位于夹具适配器
  2. 它向/geoData而不是/geo-data
  3. 发送请求

    我肯定错过了一些东西,请你点赞我吗? 谢谢

1 个答案:

答案 0 :(得分:3)

默认情况下,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'
        }
    ]
});

我还要注意,我过去曾遇到过可能导致意外行为的“数据”对象问题。