Ember查询参数不在请求中发送参数

时间:2014-03-01 02:28:40

标签: ember.js ember-data

query-params-new标志设置为true

使用最新的ember和ember数据。 Ember:1.6.0-beta.1 + canary.b5b90241 ember.js和Ember数据:1.0.0-beta.7 + canary.b45e23ba

Application Adapter设置为:

export default DS.RESTAdapter.extend({
  host: 'http://example.com',
  namespace: 'api/v2',
  headers: {
    "ClientId": "a-key",
    "Access-Control-Allow-Origin": "*",
    "Access-Control-Allow-Headers": "X-Requested-With"
  }
});

位置路线如下所示:

export default Ember.Route.extend({
  model: function(params){
    return this.store.find('restaurant');
  }
});

位置控制器看起来像这样

export default Ember.ArrayController.extend({

  queryParams: ['lat', 'lon', 'limit'],

  lat: null,
  lon: null,
  limit: null,

});

导航到此网址http://example.com/locations?lat=47.620508&limit=22&lon=-122.349174 Ember数据会发送http://example.com/locations作为请求。

我一定错过了什么?

1 个答案:

答案 0 :(得分:5)

要使query-params-new按预期工作,您需要做一些事情。

首先,你说你正在使用最新的余烬,但不指定它是最新的稳定版本还是最新的canary版本(master)。为了使用query-params-new,你需要使用canary,它只是master分支。它尚未在稳定版或测试版中提供,但您可以download it here

其次,您需要在控制器中指定要绑定到路径的参数。您的位置控制器需要看起来像这样:

export default Ember.ArrayController.extend({
  queryParams: ['lat', 'lon', 'limit']
});

所有这些都记录在Ember网站上。 http://emberjs.com/guides/routing/query-params/

根据其他问题信息进行修改:

看起来你没有在路线中使用参数。您可以使用findQuery将params发送到服务器,如下所示:

export default Ember.Route.extend({
  model: function(params){
    return this.store.findQuery('restaurant', params);
  }
});