【问题标题】:Ember Data - Adapter has no method 'map'Ember 数据 - 适配器没有方法“地图”
【发布时间】:2013-09-08 23:11:59
【问题描述】:

Ember Data 对 JSON 响应很挑剔。我的服务器响应中有一些“不规则键”,根据指南,我可以将它们映射到适配器上。 http://emberjs.com/guides/models/the-rest-adapter/#toc_underscored-attribute-names 然而,Ember 说:Type Error: Object has no method 'map'

如何将键映射到模型?

我正在使用 Ember v1.0.0 和 Ember Data v1.0.0-beta.1

App.ApplicationAdapter = DS.RESTAdapter.extend({
  namespace: 'api',
  host: 'http://localhost:8080'
});

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

App.CustomersRoute = Ember.Route.extend({
  model: function () {
    var store = this.get('store');
    return store.findAll('customer');
  }
});

App.ApplicationAdapter.map('App.Customer', {
  name: { key: 'Name' }
});

更新:

查看 Ember Data 文档,我似乎可以像这样将地图功能添加到适配器:

DS.Adapter.reopenClass({
  map: DS._Mappable.generateMapFunctionFor('attributes', function(key, newValue, map) {
    var existingValue = map.get(key);

    for (var prop in newValue) {
      if (!newValue.hasOwnProperty(prop)) { continue; }
      existingValue[prop] = newValue[prop];
    }
  })
});

我试过了,但地图似乎不起作用。 没有更多错误,但映射的属性为空。为什么?

【问题讨论】:

    标签: javascript ember.js ember-data


    【解决方案1】:

    我试过了,但地图似乎不起作用。没有更多错误,但映射的属性为空。为什么?

    您引用的指南似乎已过时,RESTAdapter 不再具有map 功能。将该 fx 添加到您的适配器消除了运行时错误,但这些只是一个更大问题的症状,即 映射属性 功能已从 RESTAdapter 中删除。

    在 ember-data 测试版中,json 数据现在通过自定义适配器中的几个钩子之一进行标准化。一些例子见rest-adapter-and-serializer-configuration

    【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多