Ember:如何重写/扩展RESTAdapter以使其在站点范围内



如果我在应用程序/适配器/应用程序中扩展适配器.js

let appAdapter = DS.RESTAdapter.extend({
  ajax: function(url, method, hash) {
    hash = hash || {};
    hash.crossDomain = true;
    hash.xhrFields = {
        withCredentials: true
    };
    return this._super(url, method, hash);
  },
});
export default appAdapter.reopen(config.adapterSettings);

它仍将被我也拥有的特定型号的适配器所取代。

我有几个特定的适配器,例如:app/adapters/testpost.js

export default DS.RESTAdapter.extend(myTemplates, {
  myTemplate: `${host}/${dir}/testpost`,
});

现在为了使其工作,我使用相同的代码段扩展了它们中的每一个,例如app/adapters/testpost.js变成了:

let testpostAdapter = DS.RESTAdapter.extend({
  ajax: function(url, method, hash) {
    hash = hash || {};
    hash.crossDomain = true;
    hash.xhrFields = { 
        withCredentials: true
    };
    return this._super(url, method, hash);
  },
});
export default testpostAdapter.extend(myTemplates, {
  myTemplate: `${host}/${dir}/testpost`,
});

问题:如何同时为所有 Ember 和所有特定适配器扩展/重写 RESTAdapter。

尝试在应用程序/应用程序.js中扩展,无法以这种方式工作。

不应直接从特定于模型的适配器中的DS.RESTAdapter.派生,而从应用程序适配器派生。所以替换这个:

import DS from 'ember-data';
export default DS.RESTAdapter.extend({...})

在您的型号特定适配器中,具有以下功能:

import ApplicationAdapter from './application'; // assuming not in pod structure
export default ApplicationAdapter.extend({...});

最新更新