2014-03-01 72 views
2

query-params-new标志设置为trueEmber查询参数不在请求中发送参数

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

应用适配器被设置为这样:

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作为请求。

我必须错过什么?

回答

4

你需要做一些事情才能使query-params-new按预期工作。

首先,你说你正在使用最新的内容,但不要指定它是最新的稳定版本还是最新的金丝雀版本(主)。为了使用query-params-new,你需要使用canary,它只是主分支。它尚未在稳定版或测试版发布,但您可以使用download it here

其次,您需要在控制器中指定要绑定到路线的哪个参数。您的位置控制器需要如下所示:

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

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

编辑基于额外的问题信息:

它看起来像你没有使用PARAMS在您的路线。您可以使用findQuery到PARAMS发送给服务器,像这样:

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

感谢我使用灰烬了答案:1.6.0-beta.1 + canary.b5b90241 ember.js和灰烬数据:1.0.0 -beta.7 + canary.b45e23ba和我的控制器看起来像这样。我会用控制器更新这个问题。 – kiwiupover

+0

@kiwiupover我更新了我的答案,并根据您更新的问题提出了另一个建议。我决定留下最初的建议以防其他人遇到此问题。 –

+0

谢谢你beerlington!问题是我没有解析路线中的参数。此外,该路线可以读取'this this.store.find('locations',params)'。 – kiwiupover