Skip to content

Instantly share code, notes, and snippets.

@Emerson
Created August 12, 2019 19:36
Show Gist options
  • Save Emerson/230ca8ecb25bafbabf740e595d556d3c to your computer and use it in GitHub Desktop.
Save Emerson/230ca8ecb25bafbabf740e595d556d3c to your computer and use it in GitHub Desktop.
The Problem
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
selectedIds: Ember.computed('signingPackages.@each.ids', function() {
var ids = [];
this.get('signingPackages').forEach(function(signingPackage) {
ids = ids.concat(signingPackage.get('ids'));
});
return ids;
}),
signingPackages: [
Ember.Object.create({
ids: [1],
items: [
Ember.Object.create({id: 1, amount: 1}),
Ember.Object.create({id: 2, amount: 1}),
Ember.Object.create({id: 3, amount: 1})
]
}),
Ember.Object.create({
ids: [2],
items: [
Ember.Object.create({id: 4, amount: 1}),
Ember.Object.create({id: 5, amount: 1}),
Ember.Object.create({id: 6, amount: 1})
]
})
],
actions: {
update: function() {
this.get('signingPackages.firstObject').get('ids').pushObject(9)
},
add: function() {
this.get('signingPackages').pushObject(
Ember.Object.create({
ids: [3],
items: [
Ember.Object.create({id: 1, amount: 1}),
Ember.Object.create({id: 2, amount: 1}),
Ember.Object.create({id: 3, amount: 1})
]
}))
}
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<h3>{{selectedIds.length}}</h3>
<ul>
{{#each signingPackages as |signingPackage|}}
<li>Ids: {{signingPackage.ids}}, Items: {{signingPackage.items.length}}</li>
{{/each}}
</ul>
<button {{action 'add'}}>Add</button>
<button {{action 'update'}}>Update</button>
<br>
<br>
{
"version": "0.15.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3"
},
"addons": {
"ember-data": "3.4.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment