Skip to content

Instantly share code, notes, and snippets.

@peterjmag
Last active January 12, 2018 19:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peterjmag/17ae149396bc249c027f9ca274a1f7ae to your computer and use it in GitHub Desktop.
Save peterjmag/17ae149396bc249c027f9ca274a1f7ae to your computer and use it in GitHub Desktop.
Declaratively selecting an option from a list
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
onSelect(sizeValue) {
this.get('onSelectSize')(sizeValue);
}
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
selectedSize: '1gb',
sizeOptions: [
{
value: '1gb',
label: '1 GB'
},
{
value: '2gb',
label: '2 GB'
},
{
value: '4gb',
label: '4 GB'
},
{
value: '8gb',
label: '8 GB'
},
{
value: '16gb',
label: '16 GB'
},
],
actions: {
onSelectSize(sizeValue) {
this.set('selectedSize', sizeValue);
}
}
});
// Stolen from https://emberigniter.com/how-to-equals-conditional-comparison-handlebars/
// to avoid the ember-truth-helpers dependency
import Ember from 'ember';
const eq = (params) => params[0] === params[1];
export default Ember.Helper.helper(eq);
body {
margin: 12px 16px;
font-family: sans-serif;
}
.size-chooser-list-item {
cursor: pointer;
}
<h1>Choose a size</h1>
{{size-chooser-list
selected=selectedSize
options=sizeOptions
onSelectSize=(action "onSelectSize")
}}
<ul>
{{#each options as |size|}}
<li
{{action "onSelect" size.value}}
class="size-chooser-list-item {{if (eq selected size.value) "selected"}}">
{{size.label}}
{{#if (eq selected size.value)}}
<span style="color: red;">selected</span>
{{/if}}
</li>
{{/each}}
</ul>
{
"version": "0.13.0",
"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.16.2",
"ember-template-compiler": "2.16.2",
"ember-testing": "2.16.2"
},
"addons": {
"ember-data": "2.16.3"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment