Skip to content

Instantly share code, notes, and snippets.

@seanjohnson08
Last active April 13, 2017 01:11
Show Gist options
  • Select an option

  • Save seanjohnson08/16ebb895b234861d508278ac3e810b10 to your computer and use it in GitHub Desktop.

Select an option

Save seanjohnson08/16ebb895b234861d508278ac3e810b10 to your computer and use it in GitHub Desktop.
New Twiddle
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
init() {
var times = [];
for (let i = 0; i < 10; i++) {
times.push(Date.now() - i * 1000);
}
this.times = times;
},
actions: {
add() {
this.times.pushObject(Date.now() - this.times.length * 1000);
},
remove() {
this.times.shiftObject();
}
}
});
import Ember from 'ember';
let clock = Ember.Object.extend(Ember.Evented).create();
setInterval(() => {
clock.trigger('tick');
}, 1000);
export default Ember.Helper.extend({
clock,
init() {
this._super(...arguments);
this.clockHandled = false;
},
compute(params, hash) {
if (!this.clockHandled) {
if (hash.autoUpdate) {
clock.on('tick', () => Ember.run.join(() => this.recompute()));
}
this.clockHandled = true;
}
return (Date.now() - params[0]) / 1000;
},
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{#each times as |time|}}
{{myHelper time autoUpdate=true}}<br />
{{/each}}
<button {{action "add"}}>Add time</button><button {{action "remove"}}>Remove time</button>
<br />
Should not update: <br />
{{myHelper times.firstObject}}
{
"version": "0.12.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": "2.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment