在重写

时间:2017-02-16 19:19:46

标签: ember.js adapter

此urlForFindAll函数返回'api / live / liveSites'。 GET请求发送到'site / api / live / liveSites' 其中site是modelName。 我尝试使用buildURL代替类似的代码并遇到同样的问题。

export default DS.RESTAdapter.extend({
  namespace: 'api',
  urlForFindAll: function (modelName, snapshot) {
    var url = this.namespace;
    if (snapshot.adapterOptions.siteType === 'live') {
      url += '/live/liveSites';
    } else {
       url +='/site/standard/standardSites';
    }
    return url;
  }
});

这是有问题的电话。

export default Ember.Route.extend({
  model () {
    return this.store.findAll('site', {
      adapterOptions: {
        siteType: 'live'
      }
    }).then(function (sites) {
      return sites.toArray();
    });
  }
})

为什么我从urlForFindAll或BuildURL返回的网址不是发出请求的网址?

编辑:我在节点4和ember-cli 2.11

编辑2:所以我一直在玩不同的API调用,实际上它似乎是在预先设置请求的路由URL ... EG:如果我当前的路线是site / edit / site_id,请求将发送到site / edit / site_id / api / live / liveSites

2 个答案:

答案 0 :(得分:0)

您的代码看起来很完美。只需确保为Adapter模型创建了特定site,这可能会也可能不会扩展应用程序适配器,具体取决于您的需要。 示例adapters/site.js

答案 1 :(得分:0)

固定:我必须在urlForFindAll返回的内容前加一个'/'。不幸的是,Ember文档并没有真正反映这一点。

所以:     返回'/'+ url;

解决了这个问题。