jeudi 24 mars 2016

Use query params of parent route to refresh the model in subroute

I have a route main which has a query param search. I have subroutes main.sub1, main.sub2

Going to /main/sub1?search=hello or /main/sub2?search=hello sets the query param of the main route to hello. This part works fine.

Now I would like to be able to refresh the model of main.sub1 when the query param search in route main changes, so I here is the code of the route 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
  }
}

I thought that since there is no search query param in the controller of main.sub1 Ember would be smart enough to guess it has to use the one from main. But now, when I go to /main/sub1 I have this error message:

Assertion Failed: You're not allowed to have more than one controller property map to the same query param key, but both main:search and main.sub1:search map to search. You can fix this by mapping one of the controller properties to a different query param key via the as config option, e.g. search: { as: 'other-search' }

My guess is that Ember automatically creates a query param search in main.sub1 which conflicts with the one from main, and does not even try to use the one from main.

How could I overcome this problem?

Simply put: how can I use an attribute of a parent route as a query param of a subroute?

Thanks!




Aucun commentaire:

Enregistrer un commentaire