扩展Ember JSONAPIAdapter findAll以从自定义URL获取json

时间:2016-10-28 09:42:01

标签: javascript django rest api ember.js

我对Ember.js比较陌生,我正在努力研究ember是如何工作的,我遇到了这个问题: 从Ember.js路线我会像这样叫我的django api:this.store.findAll('MYMODEL', 'ANOTHER_MODEL_ID')

这个findAll会产生一个api调用,比如/ mymodel / another_model_id /其中 another_model_id 是一个动态id(类似字符串的uuid)。

我尝试使用扩展ApplicationAdapter的自定义适配器(mymodel适配器)覆盖findAll方法(带有自定义buildUrl的JSONAPIAdapter用于添加尾部斜杠)。但是我的尝试失败了,因为在findAll重写的方法中,我无法访问 ANOTHER_MODEL_ID 参数。我也试图用相同的结果覆盖urlForFindAll和buildUrl方法。

做这种事情的最佳方法是什么?我该怎么做?

2 个答案:

答案 0 :(得分:0)

findAll没有id参数。你的意思是找(' modelname',' id')?

import DS from 'ember-data';

export default DS.Adapter.extend({
  findAll: function(store, type, sinceToken) {
    var query = { since: sinceToken };
    return new Ember.RSVP.Promise(function(resolve, reject) {
      Ember.$.getJSON(`/${type.modelName}`, query).then(function(data) {
        resolve(data);
      }, function(jqXHR) {
        reject(jqXHR);
      });
    });
  }
});

答案 1 :(得分:0)

我已经解决了使用urlForQuery函数并将我的适配器声明为JSONAPIAdapter,并使用DataAdapterMixin扩展它。