# 数据绑定

数据绑定只支持 Data 对象的子项。

## 基础绑定

```html
<view> {{ message }} </view>
```

```js
// index.js
Page({
  data: {
    message: 'Hello World!'
  }
})
```

## 属性绑定

```html
<view id="item-{{id}}"> </view>
```

```js
// index.js
Page({
  data: {
    id: 0
  }
})
```

## 指令属性（控制渲染逻辑）

```html
<view tt:if="{{condition}}"> </view>
```

```js
Page({
  data: {
    condition: true
  }
})
```

## 原生属性

```html
<checkbox checked="{{false}}"> </checkbox>
```

## 运算

你可以在 `{{}}` 内进行简单的运算，支持的运算如下所示。

### 三元运算

```html
<view hidden="{{flag ? true : false}}"> Hidden </view>
```

### 数运算

```html
<view> {{a + b}} + {{c}} + d </view>
```

```js
// index.js
Page({
  data: {
    a: 1,
    b: 2,
    c: 3
  }
})

// index.ttml 渲染结果是： 3 + 3 + d
```

### 字符串运算

```html
<view>{{"hello" + name}}</view>
```

```js
Page({
  data:{
    name: 'world'
  }
})
```

### 渲染对象属性

```html
<view>{{object.key}} {{array[0]}}</view>
```

```js
// index.js
Page({
  data: {
    object: {
      key: 'Hello '
    },
    array: ['World']
  }
})
```

### 逻辑控制

```html
<view tt:if="{{length > 5}}"> </view>
```

## 混合渲染

支持在 ttml 里面使用变量构建新结构。

### 数组

```html
<view tt:for="{{[zero, 1, 2, 3, 4]}}"> {{item}} </view>
```

```js
// index.js
Page({
  data: {
    zero: 0
  }
})
```

### 对象

```html
<template is="objectCombine" data="{{foo: a, bar: b}}"></template>
```

```js
// index.js
Page({
  data: {
    a: 1,
    b: 2
  }
})
```

同时支持使用扩展运算符 `...` 将对象展开。

```html
<template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}"></template>
```

```js
// index.js
Page({
  data: {
    obj1: {
      a: 1,
      b: 2
    },
    obj2: {
      c: 3,
      d: 4
    }
  }
})

```