Skip to content

Instantly share code, notes, and snippets.

@rwjblue
Forked from lifeart/controllers.application.js
Created December 8, 2018 20:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save rwjblue/2ee87cc87d2cd28d38d27afd3db523aa to your computer and use it in GitHub Desktop.
Save rwjblue/2ee87cc87d2cd28d38d27afd3db523aa to your computer and use it in GitHub Desktop.
New Twiddle
import Ember from 'ember';
let RowItem = Ember.Object.extend({
order: 0
});
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
sortDirection: 'asc',
items: Ember.computed(function(){
return Ember.A([
RowItem.create({order:1}),
RowItem.create({order:2}),
RowItem.create({order:3}),
]);
}),
sortedItems: Ember.computed('items', 'sortDirection', function(){
let result = this.get('items').sort(function(a, b) {
return a.get('order') - b.get('order');
});
if (this.get('sortDirection') === 'desc') {
return result.reverse();
} else {
return result;
}
}),
actions: {
sort() {
if (this.get('sortDirection') === 'desc') {
this.set('sortDirection', 'asc');
} else {
this.set('sortDirection', 'desc');
}
}
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
In route template:
<ul>
{{#each sortedItems as |item|}}
<li>{{item.order}}</li>
{{/each}}
</ul>
In component:
{{item-list sortedItems=sortedItems}}
<button {{action 'sort'}}>Sort {{sortDirection}}</button>
<ul>
{{#each @sortedItems as |item|}}
<li>{{item.order}}</li>
{{/each}}
</ul>
{
"version": "0.13.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "3.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3"
},
"addons": {
"ember-data": "2.16.3"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment