Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ember ATX: Ember.Evented
Search
timgthomas
July 24, 2015
Technology
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ember ATX: Ember.Evented
Lightning talk about one of my favorite Ember mixins, Ember.Evented!
timgthomas
July 24, 2015
More Decks by timgthomas
See All by timgthomas
Living Style Guides: Bringing Designers and Developers Together
timgthomas
0
280
Icons and the Web: Symbols of the Modern Age
timgthomas
0
230
Constructing Modern UIs with SVG
timgthomas
0
240
Browser Invasion: Desktop Apps and the Web
timgthomas
0
220
Mind the Gap: Bringing Designers and Developers Together
timgthomas
0
160
Zero to App Store: A Hybrid App’s Tale
timgthomas
1
200
Chocolate-Covered Vegetables: Tasty Workflows with Broccoli
timgthomas
0
190
Ember ATX: Components
timgthomas
0
120
Chocolate-Covered Vegetables: Tasty Workflows with Broccoli
timgthomas
0
430
Other Decks in Technology
See All in Technology
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
240
Essential architectural thinking (revised edition)
ufried
0
110
並行性の問題を防げ!実践トランザクション入門
occhi
0
280
Google Cloud Next Tokyo 26登壇時のスクリプト
recruitengineers
PRO
0
210
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
570
初対面のメンバーがチームを組み、Claude Codeでゼロからサービスをリリース
mkdev10
1
110
今さら理解するウェブフォントver.2026
takanorip
3
500
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
160
Loop Engineering これくらいでいい
mikanichinose
0
110
LocalStack を使ったサーバーレスアプリケーション開発 / Serverless Development with LocalStack
kakakakakku
1
330
FOSS4Gを活用した自治体業務DXの試み
470715
0
140
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
120
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
450
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Chasing Engaging Ingredients in Design
codingconduct
0
350
The World Runs on Bad Software
bkeepers
PRO
72
12k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
490
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
570
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
720
The Limits of Empathy - UXLibs8
cassininazir
2
710
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!