复制到这里一下,方便日后查询,源地址
如果模板中存在 </texterea>
将/
换成/
如何使用jst模板
代码举例:
<textarea name="jst" id="jst-template-1">
<table class="w-table">
<thead>
<tr><th>序号</th><th>姓名</th><th>性别</th></tr>
</thead>\
{if !defined("workers")}
<tr><td colspan="3">数据加载失败,请稍后再试!</td></tr>
{elseif workers&&workers.length}
{list workers as x}
<tr{if x_index==x_length-1} class="last"{/if}>
<td>${x_index+1}</td>
<td>${x.name}</td>
<td>{if x.gender==1}男{else}女{/if}</td>
</tr>
{/list}
{else}
<tr><td colspan="3">没有工人!</td></tr>
{/if}
</table>
</textarea>
后续可以使用_$get接口获取整合数据的结果
代码举例:
NEJ.define([
'util/template/jst'
],function(_t){
// 添加模版缓存
// 也可以用_$parseTemplate接口批量添加
_t._$add('jst-template-1');
// 根据模板ID取模板内容
// 返回整合数据后的html代码
var _html = _t._$get('jst-template-1',{
workers:[
{name:'abc',gender:1},
{name:'def',gender:1},
{name:'ghi'}
]
});
// TODO
});
JST语法
表达式
${}
描述:求值表达式,表达式中不可以包含 “{”或者“}”
语法:
${expr}
${expr|modifier}
${expr|modifier1|modifier2|...|modifierN}
${expr|modifier1:argExpr1_1}
${expr|modifier1:argExpr1_1,argExpr1_2,...,argExpr1_N}
${expr|modifier1:argExpr1_1|...|modifierN:argExprN_1,argExprN_2,...,argExprN_M}
范例:
${customer.firstName}
${customer.firstName|capitalize}
${customer.firstName|default:"no name"|capitalize}
${article.getCreationDate|default:new Date()|toCalendarControl:"YYYY.MM.DD",true,"creation Date"}
${(lastQuarter.calcRevenue() - fixedCosts) / 10000}
${% %}
描述:求值表达式,表达式中可以包含 “{”或者“}”
语法:
${% expr %}
范例:
${% emitLink("Solution and Products", {color: "red", blink: false}) %}
语句
list break
描述:遍历数组
语法1:
{list seq as varName}
...
{break}
...
{/list}
范例1:
{list ["aaa", "bbbb", "ccccc"] as x}
${x_index}/${x_length}:${x}<br/>
{/list}
备注:
x_index
为内置变量,值为循环的索引值。x_length
为内置变量,值为列表长度, 上例中值为3。
语法2:
{list from..to as varName}
...
{/list}
备注:循环时包含from和to值
范例2:
{list 2..10 as x}
${x_index}/${x_length}:${x}<br/>
{/list}
备注:
x_index
为内置变量,值为循环的索引值。x_length
为内置变量,值为列表长度, 上例中值为9。
for forelse
描述:遍历HASH表
语法:
{for varName in hash}
...
{forelse}
...
{/for}
注:forelse 子语句为可选
范例:
{for x in {a:"aaa", b:"bbbb", c:"ccccc"}}
${x_key} - ${x}<br/>
{forelse}
no pro
{/for}
注:x_key为内置变量,值为当前项的键值。
if elseif else
描述:条件控制语句
语法:
{if expr}
...
{elseif expr}
...
{else}
...
{/if}
注:elseif、else 子语句为可选
范例:
{if gender == 1}
男
{elseif gender == 0}
女
{else}
春哥
{/if}
var
描述:变量定义
语法:
{var varName}
{var varName = expr}
范例:
{var test = "sssssss"}
macro
描述:宏定义
语法:
{macro macroName(arg1, arg2, ... argN)}
... body of the macro ...
{/macro}
范例:
{macro htmlList(dataList, optionalListType)}
{var listType = optionalListType != null ? optionalListType : "ul"}
<${listType}>
{for item in dataList}
<li>${item}</li>
{/for}
</${listType}>
{/macro}
调用宏:
${htmlList(["首页", "日志","相册", "关于我"])}
输出:
<ul>
<li>首页</li>
<li>日志</li>
<li>相册</li>
<li>关于我</li>
</ul>
cdata
描述:文本块,内容不做语法解析
语法:
{cdata}
...no parsed text ...
{/cdata}
或
{cdata EOF}
...no parsed text ...
EOF
范例:
{cdata}
${customer.firstName}${customer.lastName}
{/cdata}
或
{cdata END_OF_CDATA_SECTION}
${customer.firstName}${customer.lastName}
END_OF_CDATA_SECTION
输出:
${customer.firstName}${customer.lastName}
minify
描述:压缩文本内容,内容不做语法解析
语法:
{minify}
...multi-line text which will be stripped of line-breaks...
{/minify}
或
{minify EOF}
...multi-line text which will be stripped of line-breaks...
EOF
范例:
{minify}
no parsed
text
and
merge
one
line
{/minify}
或
{minify EOF}
no parsed
text
and
merge
one
line
EOF
输出:no parsed text and merge one line
eval
描述:执行javascript语句,不做语法解析
语法:
{eval}
...javascript statement...
{/eval}
或
{eval EOF}
...javascript statement...
EOF
范例:
{eval}
var a = "aaaa";
alert(a);
function b(arg){
alert(arg);
}
{/eval}
或
{eval EOF}
var a = "aaaa";
alert(a);
function b(arg){
alert(arg);
}
EOF
扩展
rand
描述:随机一个指定长度的纯数字的串
语法:
${number_expr|rand}
范例:
${10|rand}
输出:3456785438
escape
描述:编码字符串
语法:
${expr|escape}
范例:
${"<div>1234<a href="#">163</a></div>"|escape}
输出:<div>1234<a href="#">163</a></div>
format
描述:格式化日期
语法:
${data_expr|format:format_expr}
范例:
${new Date()|format:"yyyy-MM-dd HH:mm:ss"}
输出:2012-06-13 16:30:55
default
描述:指定默认值
语法:
${expr|default:default_expr}
范例:
${null|default:"default value"}
输出:default value
注:当expr为undefiend,null,false,0或者空字符串时取默认值
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。