DoneJS StealJS jQuery++ FuncUnit DocumentJS
3.14.1
5.0.0 4.3.0 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-compute
      • can-define
      • can-define/list/list
      • can-define/map/map
      • can-define-stream
      • can-define-stream-kefir
      • can-event
      • can-event/async/async
      • can-event/batch/batch
      • can-event/lifecycle/lifecycle
      • can-kefir
      • can-list
      • can-map
      • can-map-backup
      • can-map-define
      • can-observation
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
    • Data Modeling
      • can-connect
      • can-connect-cloneable
      • can-connect-feathers
      • can-connect-ndjson
      • can-connect-signalr
      • can-fixture
      • can-fixture-socket
      • can-ndjson-stream
      • can-set
    • Views
      • can-component
      • can-ejs
      • can-element
      • can-react-component
      • can-stache
      • can-stache/helpers/route
      • can-stache-bindings
      • can-stache-converters
      • can-view-autorender
      • can-view-callbacks
      • can-view-href
      • 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-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-globals
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-string
      • can-string-to-any
      • can-util
      • can-zone
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-control
      • can-dom-events
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-jquery
    • 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-namespace
      • can-reflect
      • 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.offKeyValue
          • can.offPatches
          • can.offValue
          • 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.valueHasDependencies

  • Edit on GitHub

Define a function that checks if there are any other observable objects that affect the value of the object.

@@can.valueHasDependencies()

The @@can.valueHasDependencies symbol points to a function that returns true if there are any other events or property changes that will trigger an event for the value on the context object; false otherwise. By convention, if an object implementation distinguishes between unbound objects or values, and those which are bound without external dependencies (as is the case with can-compute), @@can.valueHasDependencies may return undefined for unbound objects instead of false.

var someOtherObj;
var internalValue;
function computed(value) {
    if(arguments.length >= 1) {
        internalValue = value;
        obj.__bindEvents.forEach(function(handler) {
            handler.call(this, value);
        });
    } else {
        return internalValue;
    }
}
obj.__bindEvents = [{ 
    handler: function() {},
    reads: [{ object: someOtherObj }]
}];

obj[canSymbol.for("can.valueHasDependencies")] = function() {
    return this.__bindEvents && 
        this.__bindEvents.filter(function(binding) {
            return binding.reads && binding.reads.length > 0;
        }).length > 0;
};

Returns

{Boolean}:

true if there are any other objects or properties that the object's value depends on

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

On this page

Get help

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