# Data Binding

[About Data Binding](./data-binding.md)

## Data Spread

- 此设置根据源组件的数据值更改目标组件的属性。
- 如果源组件更改了目标组件的数据属性，则目标组件的数据传播功能将连续运行，因此该功能称为数据传播。
- 可以进行多种数据传播设置

### 复制、粘贴和删除

- 由于与“数据传播”相关的重复设置可能很麻烦，因此提供了复制、粘贴和删除功能。
- 复制粘贴：您可以复制一个组件的整个“数据传播”设置并将其粘贴到另一个组件的“数据传播”设置中。 请小心，因为粘贴会替换目标组件的所有“数据传播”设置。
- 删除：仅删除组件“数据传播”设置中当前选项卡的设置。

### accessor

- 它是根据源组件的数据值更改目标组件的属性的设置。
- 设置方法遵循[JSONATA 文档](http://docs.jsonata.org/overview.html)。

### target

- 指定用于数据传播的目标组件。
- 基于与组件本身的关系进行定位
  - (self) : 组件本身
- 由 ID 指定：#id
- 指定为类：.class
- 基于数据的目标指定 -（key）：以数据对象的键值为 id 的组件将成为目标组件。 -[property]：将数据对象的属性值作为 ID 的组件将成为目标组件。

### property

- 指定要传播数据值的目标组件的属性。
- 如果属性值设置为“(action)”，则它不会应用于目标组件的任何属性。 '(action)' 属性主要用于在数据传播时只执行脚本操作的情况。

### rule

指定如何将要传播的数据应用于目标组件属性。

- value
  - 值本身被设置为组件的目标属性。
- map
  - 在目标组件的属性中设置数据属性的值。
- range
  - 在目标组件的属性中设置包含该值的范围的映射值。
- eval
  - eval 代码可以用 JavaScript 语法编写。
  - eval 代码的 context (this)是源组件。
  - eval 代码的参数具有 value 和 targets。
    - value：源组件的数据中 accessor 对应的值
    - targets：目标组件列表

### 无数据不传播(No Data No Spreading)

- 只有当根据规则类型的最终结果值不是空值时，才会传播数据。
  - 如果结果值为 undefined、null、NaN 或空白 ('')，则不会展开。
  - 否则，即使结果是数字零，数据也会被传播。
