【发布时间】:2016-07-12 04:24:34
【问题描述】:
我有一个路由main,它有一个查询参数search。
我有子路由main.sub1,main.sub2
转到/main/sub1?search=hello 或/main/sub2?search=hello 将main 路由的查询参数设置为hello。这部分工作正常。
现在我希望能够在路由main中的查询参数search发生变化时刷新main.sub1的模型,所以我这里是路由main.sub1的代码:
export default Ember.Route.extend({
queryParams: {
search: {
refreshModel: true
}
},
model(params) {
// here I can use params.search to fetch the model for this route
}
}
我认为由于main.sub1 的控制器中没有search 查询参数,Ember 会足够聪明地猜测它必须使用来自main 的参数。但是现在,当我转到/main/sub1 时,我收到了以下错误消息:
断言失败:不允许有多个控制器属性映射到同一个查询参数键,但
main:search和main.sub1:search都映射到search。您可以通过as配置选项将控制器属性之一映射到不同的查询参数键来解决此问题,例如search: { as: 'other-search' }
我的猜测是 Ember 会自动在 main.sub1 中创建一个查询参数 search,它与来自 main 的参数冲突,甚至不会尝试使用来自 main 的参数。
我该如何克服这个问题?
简单地说:如何使用父路由的属性作为子路由的查询参数?
谢谢!
【问题讨论】:
-
不能只在父路由中有查询参数吗?您仍然可以在子路由中访问它。
-
您的“主要”模型是否随查询参数而变化?如果没有,您可以将参数移动到您的子路由