Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Ember ATX: Ember.Evented
timgthomas
July 24, 2015
Technology
0
51
Ember ATX: Ember.Evented
Lightning talk about one of my favorite Ember mixins, Ember.Evented!
timgthomas
July 24, 2015
Tweet
Share
More Decks by timgthomas
See All by timgthomas
timgthomas
0
38
timgthomas
0
46
timgthomas
0
59
timgthomas
0
52
timgthomas
0
46
timgthomas
1
67
timgthomas
0
43
timgthomas
0
65
timgthomas
0
230
Other Decks in Technology
See All in Technology
kawaguti
2
420
miyake
1
420
line_developers
PRO
0
170
binarymist
0
1.3k
miura55
0
240
azara
1
880
gamella
3
1.5k
korodroid
0
130
sansandsoc
2
690
mmarukaw
0
1.9k
eayedi
2
140
viva_tweet_x
1
410
Featured
See All Featured
caitiem20
308
17k
morganepeng
93
14k
mongodb
23
3.9k
philhawksworth
192
8.8k
holman
288
130k
matthewcrist
73
7.5k
lauravandoore
437
28k
tanoku
258
24k
notwaldorf
15
1.8k
roundedbygravity
242
21k
pauljervisheath
195
15k
addyosmani
1346
190k
Transcript
Hi!
@timgthomas
Scenario
// models/item.js export default Ember.Object.extend({ actions: { save() { this.set('savedAt',
new Date()); } } }); // components/show-item.js export default Ember.Component.extend({ itemSaved: function() { // ... }.observes('item.savedAt') });
”Data Down, Actions Up“
Ember.Evented
// models/item.js export default Ember.Object.extend(Ember.Evented, { actions: { save() {
this.trigger('saved'); } } }); // components/show-item.js export default Ember.Component.extend({ init() { this._super(); this.get('item').on('saved', this.itemSaved); } });
// controllers/list.js export default Ember.Controller.extend(Ember.Evented, { actions: { save() {
this.trigger('saved'); } } }); // controllers/item.js export default Ember.Controller.extend({ init() { this._super(); this.get('controllers.list').on('saved', () => {}); } });
Route Hierarchy Gotcha!
let controller = this.get('controllers.foo'); controller.trigger('foo'); controller.trigger('foo', 'bar'); controller.on('foo', () =>
{}); controller.off('foo', () => {}); controller.one('foo', () => {}); controller.has('foo');
bit.ly/ember-evented
Thanks!