Skip to content

Instantly share code, notes, and snippets.

@SaladFork
Last active December 20, 2016 19:38
Show Gist options
  • Select an option

  • Save SaladFork/d8a6a474c120c2039f829d80a137964f to your computer and use it in GitHub Desktop.

Select an option

Save SaladFork/d8a6a474c120c2039f829d80a137964f to your computer and use it in GitHub Desktop.

Revisions

  1. SaladFork revised this gist Dec 20, 2016. 2 changed files with 1 addition and 2 deletions.
    1 change: 0 additions & 1 deletion components.my-component.js
    Original file line number Diff line number Diff line change
    @@ -24,7 +24,6 @@ export default Ember.Component.extend({
    },

    addCategory(category) {
    console.log('addCategory', category);
    this.set(`categories.${category}`, []);
    }
    }
    2 changes: 1 addition & 1 deletion twiddle.json
    Original file line number Diff line number Diff line change
    @@ -15,4 +15,4 @@
    "ember-testing": "2.10.0"
    },
    "addons": {}
    }
    }
  2. SaladFork created this gist Dec 20, 2016.
    31 changes: 31 additions & 0 deletions components.my-component.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    import Ember from 'ember';

    export default Ember.Component.extend({
    willRender() {
    // Set the "categories" property to a JavaScript object
    // with the category name as the key and the value a list
    // of products.
    this.set('categories', {
    'Bourbons': ['Bulleit', 'Four Roses', 'Woodford Reserve'],
    'Ryes': ['WhistlePig', 'High West']
    });
    },

    actions: {
    addCategoryBroken(category) {
    // This won't work!
    let categories = this.get('categories');
    categories[category] = [];
    },

    addCategoryPR(category) {
    let categories = this.get('categories');
    Ember.set(categories, category, []);
    },

    addCategory(category) {
    console.log('addCategory', category);
    this.set(`categories.${category}`, []);
    }
    }
    });
    5 changes: 5 additions & 0 deletions controllers.application.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    import Ember from 'ember';

    export default Ember.Controller.extend({
    appName: 'Ember Twiddle'
    });
    6 changes: 6 additions & 0 deletions templates.application.hbs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,6 @@
    <h1>Welcome to {{appName}}</h1>
    <br>
    <br>
    {{my-component}}
    <br>
    <br>
    25 changes: 25 additions & 0 deletions templates.components.my-component.hbs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    <ul>
    {{#each-in categories as |category products|}}
    <li>{{category}}
    <ol>
    {{#each products as |product|}}
    <li>{{product}}</li>
    {{/each}}
    </ol>
    </li>
    {{/each-in}}
    </ul>

    {{input value=newCategory}}
    <br>
    <button onclick={{action 'addCategoryBroken' newCategory}}>
    Add Category (PR "broken" example)
    </button>
    <br>
    <button onclick={{action 'addCategoryPR' newCategory}}>
    Add Category (PR "working" example)
    </button>
    <br>
    <button onclick={{action 'addCategory' newCategory}}>
    Add Category (rwj example)
    </button>
    18 changes: 18 additions & 0 deletions twiddle.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    {
    "version": "0.10.7",
    "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.10.0",
    "ember-data": "2.10.0",
    "ember-template-compiler": "2.10.0",
    "ember-testing": "2.10.0"
    },
    "addons": {}
    }