Skip to content

Instantly share code, notes, and snippets.

@acburdine
Last active October 28, 2016 18:21
Show Gist options
  • Save acburdine/6fc8eb235a59f7451dc6247202eb1133 to your computer and use it in GitHub Desktop.
Save acburdine/6fc8eb235a59f7451dc6247202eb1133 to your computer and use it in GitHub Desktop.
Ember-Sortable re-order items
import Ember from 'ember';
const {computed} = Ember;
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
sortdef: ['id'],
sortedModel: computed.sort('model', 'sortdef'),
actions: {
reset() {
this.set('sortdef', ['id']);
},
sortByIdDesc() {
this.set('sortdef', ['id:desc']);
},
sortByOrder() {
this.set('sortdef', ['order']);
},
reorderItems(items) {
items.forEach((item, index) => {
Ember.set(item, 'order', index);
});
}
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return [
{id: 1, name: "A", order: 5},
{id: 2, name: "B", order: 2},
{id: 3, name: "C", order: 4},
{id: 4, name: "D", order: 3},
{id: 5, name: "E", order: 1}
];
}
});
<h1>Ember Sortable sort test</h1>
<br>
<br>
{{#sortable-group tagName="ul" onChange=(action "reorderItems") as |group|}}
{{#each sortedModel as |item|}}
{{#sortable-item tagName="li" model=item group=group handle=".handle"}}
{{item.name}}
<span class="handle">&varr;</span>
{{/sortable-item}}
{{/each}}
{{/sortable-group}}
<br><br>
<button {{action "reset"}}>
Sort by id
</button>
<button {{action "sortByIdDesc"}}>
Sort by id desc
</button>
<button {{action "sortByOrder"}}>
Sort by order
</button>
{
"version": "0.10.6",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.9.0",
"ember-data": "2.9.0",
"ember-template-compiler": "2.9.0",
"ember-testing": "2.9.0"
},
"addons": {
"ember-sortable": "1.9.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment