在1.7版本中,Ember应该支持查询参数。我在控制器中使用它们没有问题,但我想在路由中访问它们,理想情况下是在beforeModel钩子中,但模型钩子也可以。
API docs为beforeModel钩子提到了一个queryParam
参数,但如果我尝试使用它,它总是未定义的。
Query Parameters guide似乎建议查询参数应该可以作为模型钩子的第一个参数的一部分进行访问。但这也是不确定的。有关示例,请参阅下面的代码。
有没有办法从Route访问查询参数?
谢谢你的帮助。
App.ApplicationRoute = Em.Route.extend({
beforeModel: function(transition, queryParams){
console.log(queryParams.test); //undefined at /?test=123
},
model: function(params){
console.log(params.test); //undefined at /?test=123
}
});
发布于 2014-11-03 08:20:18
我很确定这是一个bug,但您可以同时通过transition对象访问它们:
App.ApplicationRoute = Em.Route.extend({
beforeModel: function(transition){
console.log(transition.queryParams.test);
}
}
发布于 2015-01-06 23:07:49
通过在控制器中指定查询参数,params
将自动包含它们
ApplicationController = Ember.Controller.extend({
queryParams: ['test'],
test: null
});
发布于 2017-04-21 14:30:50
在最新版本的ember (撰写本文时为2.12)中,可以在模型钩子中访问queryParams,如下所示:
import Ember from 'ember';
export default Ember.Route.extend({
queryParams: {
test: ''
},
model(params) {
console.log(params.test);
},
});
注意到现在可以通过params
对象访问动态段和queryParams
。由于params
在beforeModel
钩子中不可用,因此当您必须在model
钩子中访问queryParams
时,此解决方案仍然有效。
https://stackoverflow.com/questions/25941837
复制相似问题