Skip to content

Instantly share code, notes, and snippets.

@CezaryH
Last active July 4, 2018 09:15
Show Gist options
  • Save CezaryH/e5ce64af05438dbcaa869b83500d7484 to your computer and use it in GitHub Desktop.
Save CezaryH/e5ce64af05438dbcaa869b83500d7484 to your computer and use it in GitHub Desktop.
New Twiddle
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
arr1: [{date: Date.now()}],
arr2: [{date: Date.now()}],
arr3: [{date: Date.now()}],
array1Contents: Ember.computed('arr1.length', function() {
return this.get('arr1').map(i => i.date).join(',');
}),
array2Contents: Ember.computed('arr2', function() {
return this.get('arr2').map(i => i.date).join(',');
}),
array3Contents: Ember.computed('[email protected]', function() {
return this.get('arr3').map(i => i.date).join(',');
}),
actions: {
replaceArray(name) {
this.set(name, [{date: Date.now()}]);
},
pushArray(name){
this.get(name).pushObject({date: Date.now()});
},
replaceItem(name) {
this.set(`${name}.0.date`, Date.now());
}
}
});
<b>overwrite array</b> - sets new array under property <br>
<b>pushArray</b> - addes new element to array <br>
<b>replace Item in Array</b> - calls set on first element of array
<br>
<br>
arr2: {{array2Contents}} - that works only if whole array was overwriten <br>
<button {{action "replaceArray" 'arr2'}}>overwrite array</button>
<button {{action "pushArray" 'arr2'}}>pushArray</button>
<button {{action "replaceItem" 'arr2'}}>replace Item in Array</button>
<br/> <br/>
arr1: {{array1Contents}} - that works if array length has changed <br/>
<button {{action "replaceArray" 'arr1'}}>overwrite array</button>
<button {{action "pushArray" 'arr1'}}>pushArray</button>
<button {{action "replaceItem" 'arr1'}}>replace Item in Array</button>
<br/> <br/>
arr3: {{array3Contents}} - that works if any item in array has changed <br>
<br/>
<button {{action "replaceArray" 'arr3'}}>overwrite array</button>
<button {{action "pushArray" 'arr3'}}>pushArray</button>
<button {{action "replaceItem" 'arr3'}}>replace Item in Array</button>
{{outlet}}
<br>
<br>
{
"version": "0.15.0",
"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.2.2",
"ember-template-compiler": "3.2.2",
"ember-testing": "3.2.2"
},
"addons": {
"ember-data": "3.2.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment