我的路由main
有一个查询参数search
。
我有子文件main.sub1
,main.sub2
转到/main/sub1?search=hello
或/main/sub2?search=hello
会将main
路由的查询参数设置为hello
。这部分工作正常。
现在我希望能够在路由main.sub1
中的查询参数search
发生更改时刷新main
的模型,所以我这里是路由的代码{{1 }}:
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
}
}
Ember的控制器中没有search
查询参数,所以Ember会很聪明地猜测它必须使用来自main.sub1
的那个。但现在,当我转到main
时,我收到此错误消息:
断言失败:您不允许将多个控制器属性映射到同一个查询参数键,但
/main/sub1
和main:search
都映射到main.sub1:search
。您可以通过search
配置选项将其中一个控制器属性映射到其他查询参数键来解决此问题,例如:as
我的猜测是,Ember会自动在search: { as: 'other-search' }
中创建一个查询参数search
,它与main.sub1
中的查询参数冲突,甚至不会尝试使用main
中的查询参数}。
我怎么能克服这个问题呢?
简单地说:我如何使用父路由的属性作为子路由的查询参数?
谢谢!
答案 0 :(得分:0)
我遇到了同样的问题。
完全可以使用“main”路由的queryParams。 您不需要将任何queryParams添加到子路由。 refreshModel设置属于主路由,所有子路由也将刷新。
您也可以使用子路径模型:
this.paramsFor(‘main’)
请参阅:https://discuss.emberjs.com/t/refresh-model-when-the-queryparam-of-a-parent-route-changes/14903/2