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
      • 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
        • ./deep/
        • ./list/
        • ./map/
        • ./merge-deep/
        • ./patcher/
      • 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-diff/patcher/patcher

  • Edit on GitHub

Get patches from changes to an underlying list or from changes from an observable emitting lists.

new Patcher( observableOrList [, priority] )

Patcher is used to get consistent patch events from a variety of source observables. For example, a patcher can be used to get patches from changes to a can-define/list/list:

var hobbies = new DefineList(["dancin","programmin"]);

var patcher = new Patcher(hobbies);

canReflect.onPatches(patcher, console.log);

hobbies.push("foosin") // logs {
                       //   type: "splice",
                       //   index: 2,
                       //   deleteCount: 0,
                       //   insert: ["foosin"]
                       // }

Patcher can also be used to create patches from an observable as it changes from one list to another list:

var hobbies = new DefineList(["dancin","programmin"]);
var hobbiesObservable = value.fromValue(hobbies);

var patcher = new Patcher(hobbies);

canReflect.onPatches(patcher, console.log);

hobbies.push("foosin") // logs-> {
                       //   type: "splice",
                       //   index: 2,
                       //   deleteCount: 0,
                       //   insert: ["foosin"]
                       // }

hobbiesObservable.value = new DefineList(["dancin","foosin"])
// logs-> {
//   type: "splice",
//   index: 1,
//   deleteCount: 1,
//   insert: []
// }

Parameters

  1. observableOrList {List|SingleValueObservable}:

    A list-like object or an observable that implements onValue.

  2. priority {Number}:

    An optional priority used to schedule in deriveQueue when the diff between an old list and new list is run.

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