使用父路由的查询参数刷新子路由中的模型

时间:2016-03-24 14:26:32

标签: ember.js ember-cli

我的路由main有一个查询参数search。 我有子文件main.sub1main.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/sub1main:search都映射到main.sub1:search。您可以通过search配置选项将其中一个控制器属性映射到其他查询参数键来解决此问题,例如: as

我的猜测是,Ember会自动在search: { as: 'other-search' }中创建一个查询参数search,它与main.sub1中的查询参数冲突,甚至不会尝试使用main中的查询参数}。

我怎么能克服这个问题呢?

简单地说:我如何使用父路由的属性作为子路由的查询参数?

谢谢!

1 个答案:

答案 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