【问题标题】:Ember data - change model URLEmber 数据 - 更改模型 URL
【发布时间】: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


    【解决方案1】:

    您可以使用适配器。

    如果您的后端约定与 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

    【讨论】:

    • 谢谢!我想在 pathForType 方法中我应该读取一个包含类型/路径对的映射,我可以在其中将 Ember 类型映射到后端服务器上的 url 路径?
    • 不需要,具体型号可以使用Adapter。
    • 我认为你也可以重写 RESTAdapter.buildURL 方法来将 ember-data 调整为任何形式的 API。
    猜你喜欢
    • 2013-01-02
    • 2012-06-11
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多