Lightning talk about one of my favorite Ember mixins, Ember.Evented!
Hi!
View Slide
@timgthomas
Scenario
// models/item.jsexport default Ember.Object.extend({actions: {save() { this.set('savedAt', new Date()); }}});// components/show-item.jsexport default Ember.Component.extend({itemSaved: function() {// ...}.observes('item.savedAt')});
”Data Down, Actions Up“
Ember.Evented
// models/item.jsexport default Ember.Object.extend(Ember.Evented, {actions: {save() { this.trigger('saved'); }}});// components/show-item.jsexport default Ember.Component.extend({init() {this._super();this.get('item').on('saved', this.itemSaved);}});
// controllers/list.jsexport default Ember.Controller.extend(Ember.Evented, {actions: {save() { this.trigger('saved'); }}});// controllers/item.jsexport default Ember.Controller.extend({init() {this._super();this.get('controllers.list').on('saved', () => {});}});
Route HierarchyGotcha!
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!