Skip to content

Instantly share code, notes, and snippets.

@machty
Last active April 21, 2023 17:14
Show Gist options
  • Select an option

  • Save machty/8167051 to your computer and use it in GitHub Desktop.

Select an option

Save machty/8167051 to your computer and use it in GitHub Desktop.
Ember Query Param API examples
@HeyBillFinn
Copy link
Copy Markdown

Are there any examples of using query params with an Ember.Select view?

@dmitry-valkov
Copy link
Copy Markdown

Is it possible to pass an entire object to the queryParams?

For example:

queryParams: ['filters'],
filters: {
  name: 'Ivan',
  age: 666
}

In the address bar, in theory, it should look like this: ```?filters[name]=ivan&filters[age]=666
But how to do it?

Tried your Gist - https://gist.github.com/machty/7923797 - but in Ember 1.7.0 this don't work :)

@kriskhaira
Copy link
Copy Markdown

@dlcwalkoff: Did you ever figure out an easy way to pass an object in the URL like that?

@sarus
Copy link
Copy Markdown

sarus commented Nov 7, 2015

+1 on how to use objects in the query params (e.g., /book/5?filter[chapter]=Chapter1). This style is used heavily in json api and should be supported by Ember. Any ideas on how to go about it? It's also recommended for paging /books?page[number]=1&page[size]=100

@sarus
Copy link
Copy Markdown

sarus commented Nov 7, 2015

Just came up with a way to use object based query params which seems to work:

In the controller you need to map the controller property to your query param key:

queryParams: ['sort',{
    entityNameFilterValue: 'filter[entity.entity-name]'
  }],

Then in the routers model function you need to construct the params however you want based on the controller value:

model: function(params){
    if(params.entityNameFilterValue){
      params.filter = {};
      params.filter['entity.entity-name'] = params.entityNameFilterValue;
      delete params.entityNameFilterValue;
    }
    // do your store lookup now with params
}

@tchan
Copy link
Copy Markdown

tchan commented Jul 31, 2017

Thanks for this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment