DoneJS StealJS jQuery++ FuncUnit DocumentJS
5.33.3
6.0.0 4.3.0 3.14.1 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-bind
      • can-compute
      • can-debug
      • can-define
      • can-define/list/list
      • can-define/map/map
      • can-define-backup
      • can-define-stream
      • can-define-stream-kefir
      • can-event-queue
      • can-kefir
      • can-list
      • can-map
      • can-map-compat
      • can-map-define
      • can-observable-array
      • can-observable-object
      • can-observation
      • can-observation-recorder
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
      • can-value
    • Views
      • can-attribute-observable
      • can-component
      • can-stache
      • can-stache-bindings
      • can-stache-converters
      • can-stache-element
      • can-stache-route-helpers
      • can-view-autorender
      • can-view-callbacks
      • can-view-import
      • can-view-live
      • can-view-model
      • can-view-nodelist
      • can-view-parser
      • can-view-scope
      • can-view-target
      • steal-stache
    • Data Modeling
      • can-connect
      • can-connect-feathers
      • can-connect-ndjson
      • can-connect-tag
      • can-fixture
      • can-fixture-socket
      • can-local-store
      • can-memory-store
      • can-ndjson-stream
      • can-query-logic
      • can-realtime-rest-model
      • can-rest-model
      • can-set-legacy
      • can-super-model
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-hash
      • can-route-mock
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-diff
      • can-globals
      • can-join-uris
      • can-key
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-queues
      • can-string
      • can-string-to-any
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-child-nodes
      • can-control
      • can-dom-data
      • can-dom-events
      • can-dom-mutate
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-fragment
    • Data Validation
      • can-define-validate-validatejs
      • can-type
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
      • can-construct-super
      • can-data-types
      • can-namespace
      • can-reflect
      • can-reflect-dependencies
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
        • Methods
          • for
        • Type Symbols
          • can.isFunctionLike
          • can.isListLike
          • can.isMapLike
          • can.isValueLike
        • Get/Set Symbols
          • can.deleteKeyValue
          • can.getKeyValue
          • can.getValue
          • can.setKeyValue
          • can.setValue
          • can.updateValues
        • Shape Symbols
          • can.assignDeep
          • can.getName
          • can.getOwnEnumerableKeys
          • can.getOwnKeyDescriptor
          • can.getOwnKeys
          • can.hasKey
          • can.hasOwnKey
          • can.proto
          • can.size
          • can.updateDeep
        • Call Symbols
          • can.apply
          • can.new
        • Observe Symbols
          • can.getKeyDependencies
          • can.getValueDependencies
          • can.keyHasDependencies
          • can.offEmit
          • can.offKeyValue
          • can.offPatches
          • can.offValue
          • can.onEmit
          • can.onKeyValue
          • can.onKeys
          • can.onKeysAdded
          • can.onKeysRemoved
          • can.onPatches
          • can.onValue
          • can.valueHasDependencies
        • Types
          • Patch
        • keyFor
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

can.onEmit

  • Edit on GitHub

Defines how observables can listen to the object's value whenever it is emitted.

@@can.onEmit( handler(newValue) )

The @@can.onEmit symbol points to a function that registers handler to be called back with the new value of the object when it is emitted. @@can.onEmit can be used when you wish to emit a value that isn't changing.

const obj = function(value) {
    if(arguments.length >= 1) {
        obj.currentValue = value;
        obj.handlers.forEach(function(handler){
            handler.call(obj, value);
        });
    } else {
        return obj.currentValue;
    }
};

obj[canSymbol.for("can.onEmit")] = function(handler){
    if(!obj.handlers) {
        obj.handlers = [];
    }
    obj.handlers.push(handler);
}

const listener = function (value) {
    console.log('emitted', value);
}

obj[canSymbol.for("can.onEmit")](listener);

obj(5); // -> output: "emitted 5"
obj(5); // -> output: "emitted 5"

Parameters

  1. handler {function(newValue)}:

    The handler must be called back with this as the instance of the observable.

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 5.33.3.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news