Ember数据:阻止查询参数上的encodeURIComponent

时间:2016-02-24 06:47:19

标签: javascript ember.js ember-data

我正在使用一个API,它需要使用保留字来对抗the recommendation of the specification。我需要覆盖编码URL的默认行为。

以下是我的查询参数:

export default Ember.Mixin.create({
    keywords: null,
    genre: Ember.computed.alias("applicationController.genre"),
    qualities: ["720p", "1080p", "3d"],
    quality: "720p,1080p,3d",
    queryParams: ["keywords", "page", "perPage", "genre", "sort", "quality"],
    perPage: 50,
    page: 1,
    sort: "asc"
});

目前,请求结束时,个字符替换为%2c。如何保留quality的查询参数值?

1 个答案:

答案 0 :(得分:2)

您需要覆盖适配器上的ajaxOptions。 默认实现将.data直接赋给jQuery,然后jQuery正在对查询参数进行编码。也许有些像这样可以做到这一点:

ajaxOptions() {
  let hash = this._super(...arguments);

  if(hash.data && hash.type === 'GET') {
    hash.url += '?' + Object.keys(hash.data).map(key => {
        return `${key}=${hash.data[key]}`;
    }).join('&');
    delete hash.data;
  }

  return hash;
}