In my Ember app I have a page with the list of posts. This posts come from API. Here is my model.
import Ember from 'ember';
export default Ember.Route.extend({
queryParams: {
order: {
refreshModel: true
}
},
model(params) {
return this.store.query('design', params);
}
});
I want to sort post on API, so I add query parameter order
to my request. API responds with the same posts but in different order. Here are my requests.
GET http://localhost:3000/api/v1/posts?order=title-desc
{
"data": [{
"id": "247",
"type": "posts",
"attributes": {
"title": "Randy McCullough",
"created-at": "2015-11-13T09:43:56.147Z"
}
}, {
"id": "248",
"type": "posts",
"attributes": {
"title": "Pablo Carter"
"created-at": "2015-11-13T09:43:56.248Z"
}
}
}]
}
GET http://localhost:3000/api/v1/posts?order=title-asc
{
"data": [
{
"id": "248",
"type": "posts",
"attributes": {
"title": "Pablo Carter"
"created-at": "2015-11-13T09:43:56.248Z"
}
},
{
"id": "247",
"type": "posts",
"attributes": {
"title": "Randy McCullough",
"created-at": "2015-11-13T09:43:56.147Z"
}
},
}]
}
Here is my template.
{{#each posts as |post|}}
{{post-thumbnail post}}
{{else}}
No posts was found.
{{/each}}
Problem is that template doesn’t re-render after sorting. I think Ember doesn’t account order of elements in response and consider that responses as identical.
May be the whole way of sorting I use is wrong? What is the best practice of sorting in Ember?