首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Ember 1.7中路由访问查询参数

如何在Ember 1.7中路由访问查询参数
EN

Stack Overflow用户
提问于 2014-09-20 04:21:46
回答 5查看 23.2K关注 0票数 22

在1.7版本中,Ember应该支持查询参数。我在控制器中使用它们没有问题,但我想在路由中访问它们,理想情况下是在beforeModel钩子中,但模型钩子也可以。

API docs为beforeModel钩子提到了一个queryParam参数,但如果我尝试使用它,它总是未定义的。

Query Parameters guide似乎建议查询参数应该可以作为模型钩子的第一个参数的一部分进行访问。但这也是不确定的。有关示例,请参阅下面的代码。

有没有办法从Route访问查询参数?

谢谢你的帮助。

代码语言:javascript
复制
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
   }
}); 
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-11-03 08:20:18

我很确定这是一个bug,但您可以同时通过transition对象访问它们:

代码语言:javascript
复制
App.ApplicationRoute = Em.Route.extend({
   beforeModel: function(transition){
       console.log(transition.queryParams.test);
   }
}
票数 24
EN

Stack Overflow用户

发布于 2015-01-06 23:07:49

通过在控制器中指定查询参数,params将自动包含它们

代码语言:javascript
复制
ApplicationController = Ember.Controller.extend({
  queryParams: ['test'],
  test: null
});
票数 7
EN

Stack Overflow用户

发布于 2017-04-21 14:30:50

在最新版本的ember (撰写本文时为2.12)中,可以在模型钩子中访问queryParams,如下所示:

代码语言:javascript
复制
import Ember from 'ember';

export default Ember.Route.extend({
    queryParams: {
        test: ''
    },
    model(params) {
        console.log(params.test);
    },
});

注意到现在可以通过params对象访问动态段和queryParams。由于paramsbeforeModel钩子中不可用,因此当您必须在model钩子中访问queryParams时,此解决方案仍然有效。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25941837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档