# Data Binding

## Concept

- 每个组件都有其自己的数据属性。
- 可以如下设置组件的数据属性。
  - 初始数据：建模人员可以在建模过程中设置初始数据。
  - 对于数据源组件：将从数据源接收的结果设置为自己的数据。
  - 对于基于UI的组件：通过用户交互更改的值设置为数据。
  - 数据传播：可以通过设置其他组件的数据绑定来设置。
- 可以根据设置的数据绑定模型来更改目标组件的属性，以响应组件数据的更改。

## Identifier

### ID

- 组件的唯一名称

### class

- 组件类别
- 可以设置多个用空格分割的类
- 每个类可以在发送数据时被指定为目标。

### template prefix

- 可以在将组件指定为模板时设置。
- 设置为模板的组件不会显示。
- 指何时通过克隆使用模板动态创建组件。

### no data no show

- 在Viewer模式下操作时，如果在组件中没有数据，则不显示。

### intent sensitive

- 更改源组件的数据时，数据传播有效。 换句话说，即使重新设置了数据，除非实际更改该值，否则数据传播将不起作用。 这是一种提高监视目的效率的方法。
- 但是，当打开intent sensitive设置时，即使数据没有更改，即该值实际上并未更改，也可以进行数据传播。
- 此属性也对源组件的value属性的配置动作发生作用。

## Initial Data

- 设置组件的初始数据。
- 数据可以设置为字符串，数字或JSON对象类型之一。

## Data Spread

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

### accessor

- 在只传播源组件数据对象的一部分时设置。
- 可以指定数据对象的属性名称。
- 如果数据对象的属性层次深，则可以通过用'.'分割来连续指定它。

### target

- 指定用于数据传播的目标组件。
- 由ID指定：#id
- 指定为类：.class
- 基于数据的目标指定
    -（key）：以数据对象的键值为id的组件将成为目标组件。
    -[property]：将数据对象的属性值作为ID的组件将成为目标组件。

### property

- 指定要传播数据值的目标组件的属性。

### rule

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

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