UNPKG

ember-source

Version:

A JavaScript framework for creating ambitious web applications

82 lines (68 loc) 2.06 kB
import '../-internals/meta/lib/meta.js'; import '../../shared-chunks/mandatory-setter-DHZe7-kW.js'; import '../debug/index.js'; import '../../@glimmer/destroyable/index.js'; import '../../@glimmer/validator/index.js'; import '../../shared-chunks/debug-to-string-CFb7h0lY.js'; import '../../@glimmer/global-context/index.js'; import '../../shared-chunks/reference-C3TKDRnP.js'; import '../../shared-chunks/capabilities-O_xc7Yqk.js'; import { q as hasListeners, F as removeListener, k as sendEvent, E as addListener } from '../../shared-chunks/observers-Bj9qLVau.js'; export { M as on } from '../../shared-chunks/observers-Bj9qLVau.js'; import '../-internals/environment/index.js'; import Mixin from './mixin.js'; /** @module @ember/object/evented */ /** This mixin allows for Ember objects to subscribe to and emit events. ```app/utils/person.js import EmberObject from '@ember/object'; import Evented from '@ember/object/evented'; export default class Person extends EmberObject.extend(Evented) { greet() { // ... this.trigger('greet'); } } ``` ```javascript var person = Person.create(); person.on('greet', function() { console.log('Our person has greeted'); }); person.greet(); // outputs: 'Our person has greeted' ``` You can also chain multiple event subscriptions: ```javascript person.on('greet', function() { console.log('Our person has greeted'); }).one('greet', function() { console.log('Offer one-time special'); }).off('event', this, forgetThis); ``` @class Evented @public */ const Evented = Mixin.create({ on(name, target, method) { addListener(this, name, target, method); return this; }, one(name, target, method) { addListener(this, name, target, method, true); return this; }, trigger(name, ...args) { sendEvent(this, name, args); }, off(name, target, method) { removeListener(this, name, target, method); return this; }, has(name) { return hasListeners(this, name); } }); export { Evented as default };