DoneJS StealJS jQuery++ FuncUnit DocumentJS
4.3.0
5.0.0 3.13.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
        • ./map/
          • addEventListener
          • @can.getWhatIChange
          • @can.isBound
          • @can.offKeyValue
          • @can.onKeyValue
          • dispatch
          • listenTo
          • off
          • on
          • one
          • removeEventListener
          • stopListening
        • ./type/
        • ./value/
      • can-kefir
      • can-list
      • can-map
      • can-map-define
      • can-observation
      • can-observation-recorder
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
      • can-value
    • Data Modeling
      • can-connect
      • can-connect-feathers
      • can-fixture
      • can-fixture-socket
      • can-ndjson-stream
      • can-set
    • Views
      • can-component
      • can-stache
      • can-stache-bindings
      • can-stache-converters
      • 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
      • react-view-model
      • react-view-model/component
      • steal-stache
    • 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-util
      • can-zone
      • 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-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
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

@can.getWhatIChange

  • Edit on GitHub

Return observables whose values are affected by attached event handlers

@can.getWhatIChange(key)

The @can.getWhatIChange symbol is added to make sure can-debug can report all the observables whose values are set by a given observable's key.

This function iterates over the event handlers attached to a given key and collects the result of calling @can.getChangesDependencyRecord on each handler; this symbol allows the caller to tell what observables are being mutated by the event handler when it is executed.

In the following example a can-simple-map instance named me is created and when its age property changes, the value of a can-simple-observable instance is set. The event handler that causes the mutation is then decatorated with @can.getChangesDependencyRecord to register the mutation dependency.

var obs = new SimpleObservable("a");
var me = new SimpleMap({ age: 30 });
var canReflect = require("can-reflect");

var onAgeChange = function onAgeChange() {
canReflect.setValue(obs, "b");
};

onAgeChange[canSymbol.for("can.getChangesDependencyRecord")] = function() {
return {
    valueDependencies: new Set([ obs ]);
}
};

canReflect.onKeyValue(me, "age", onAgeChange);
me[canSymbol.for("can.getWhatIChange")]("age");

The dependency records collected from the event handlers are divided into two categories:

  • mutate: Handlers in the mutate/domUI queues
  • derive: Handlers in the notify queue

Since event handlers are added by default to the "mutate" queue, calling @can.getWhatIChange on the me instance returns an object with a mutate property and the valueDependencies Set registered on the onAgeChange handler.

Please check out the can-reflect-dependencies docs to learn more about how this symbol is used to keep track of custom observable dependencies.

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

On this page

Get help

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