/chiasm-links

Data binding between Chiasm components.

Primary LanguageJavaScriptMIT LicenseMIT

chiasm-links

Build Status

Data binding between Chiasm components.

This is a Chiasm plugin that implements both unidirectional and bidirectional data binding between properties within Chiasm components. It uses a domain specific language (DSL) to express data binding links between two components, like this:

  • Unidirectional myComponent.myPropertyA -> myOtherComponent.myPropertyB
  • Bidirectional myComponent.myPropertyA <-> myOtherComponent.myPropertyB

To see unidirectional data binding in action, take a look at this Chiasm Foundation Example. In this example, dragging the X in the B box causes the X in the C box to update. This linkage is set up by chiasm-links. Here's what the Chiasm configuration fragment looks like that sets up a binding from the lineWidth property of component with alias B to the lineWidth property of component with alias C:

"links": {
  "plugin": "links",
  "state": {
    "bindings": [
      "B.lineWidth -> C.lineWidth"
    ]
  }
}

To see bidirectional data binding in action, take a look at this Map & Globe Example. In this example, the binding expression

leafletMap.center <-> d3Globe.center

sets up bidirectional data binding such that panning in either map representation updates the other accordingly.

Deep equality checking is required for bidirectional data binding, so be cautious when using this feature on properties that may potentially be large data structures (e.g. data tables).