### **模板语法**
UOkay使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层UOkay实例的数据。与其他MVVM框架类似,UOkay根据DOM树构建成虚拟节点树。结合响应系统,UOkay能自动计算数据变化产生的DOM变化,做出响应。
#### **文本**
我们将需要绑定的数据通过双大括号包围,进行文本插值。
~~~
<div id = "app">
你好! {{message}}
</div>
~~~
上面代码中的message会被替代为对应数据对象message值或行为Action上的message属性。当数据对象message或行为属性发生变化时,相应的插值也会发生更新。
#### **javascript表达式**
UOkay支持javascript四则运算与三目运算
#### 四则运算
~~~
<div id = "app">
{{a + 1}}
</div>
~~~
输出的结果为a+1的值
#### 三目运算
~~~
<div id = "app">
{{a == 0?'$':'¥'}}
</div>
~~~
当a = 0时,上面例子将输出$,
当a = 1时,上面例子将输出¥。
UOkay对于javascript表达式也是响应式的,UOkay会提取表达式中所有的变量并与对应的数据对象进行一一绑定。
### 条件语句
UOkay定义了IF标签,IF标签的condition属性支持javascript语句,并且UOkay会提取语句中的的变量,使得IF节点成为虚拟节点,绑定UOkay的数据系统,形成响应系统。
~~~
<div id = "app">
<if condition="a == 0">
$
<else>
¥
</else>
</if>
</div>
~~~
~~~
var app = new Okay({
ele:'app',
data: {
a:1
}
})
~~~
这里需要注意的是ELSE节点是IF标签的子标签,并不是与IF标签同级的标签!
当app.data.a = 1时,视图将输出
~~~
<else>
¥
</else>
~~~
当app.data.a = 0时,视图将输出
~~~
<if condition="a == 0">
$
</if>
~~~
### for语句
UOkay定义了FOR标签,FOR标签的expre属性并不支持所有javascript循环语句,语法如下:
~~~
<for expre = "item of array">
<!--列表内容-->
</for>
~~~
当前仅支持of关键字。