伊可模板引擎MVC版
假如数据为:
通过一些简单的指令,可以让模板具有一定程度的逻辑动态性。指令由#开头,紧接着是指令类型,比如:{{# if true }},#号表示这是一个指令,if表示是一个条件指令 true 表示条件。
一、条件类指令
条件满足时执行,由if和end组成,示例:
小明是:{{#if age >= 18}}成年人{{#end}}
可以包含分支,由else指示,示例:
小明是:{{#if sex > 0 }}
男生
{{#else}}
女生
{{#end}}
反向条件,由unless和end组成,如:
{{#unless isLogined }}您还没有登录哦{{#end}}
二、简写类指令
我们先看不简写的情况,如:
{{user.name}},欢迎您!您是{{#if user.sex}}男生{{#else}}女生{{#end}}
通过简写指令with,可以简化写法,如:
{{#with user}}
{{name}},欢迎您!您是{{#if sex}}男生{{#else}}女生{{#end}}
{{#end}}
三、循环遍历类指令
对集合类数据进行遍历可以用each或eachr指令,内置变量@this表示当前遍历到的元素,假设数据为:
var data={
    colors:["white","red","yellow","blue"]
};
模板内容为:
<ul>
    {{#each colors}}
    <li>{{@this}}</li>
    {{#end}}
</ul>
运行后的输出结果为:
<ul>
    <li>white</li>
    <li>red</li>
    <li>yellow</li>
    <li>blue</li>
</ul>
each和eachr的区别是each按顺序遍历,而eachr是按反序遍历,上例中如果将each换成eachr,则输出结果为:
<ul>
    <li>blue</li>
    <li>yellow</li>
    <li>red</li>
    <li>white</li>
</ul>
四、上下文变量
系统提供一些内置的变量,其值根据上下文环境而变化,比如循环遍历时@index表示当前遍历到的元素在集合中的下标。

支持的内置变量有:
@this - 当前遍历的对象
@key - 当前遍历到的键,当被遍历的是一个对象而不是数组时有效
@index - 当前遍历的下标
@last - 当前@this是否为集合中的最后一个元素,结果为true或false
@first - 当前@this是否为集合中的第一个元素,结果为true或false
@root - 顶级对象