jTemplates部分语法介绍
1.{#if}
{#if |COND|}..{#elseif |COND|}..{#else}..{#/if}
Examples:
{#if 2*8==16} good {#else} fail {#/if}
Return:
good
{#if $T.list_id == 5} good {#else} fail {#/if}
Return:
fail
(check 'data' below)
{#if $T.list_id} {$T.list_id} {#/if}
Return:
4
{#if $T.list_id == 3} System list {#elseif $T.list_id == 4} Users List {#elseif $T.list_id == 5} Errors list {#/if}
Return:
Users List
Code:
Data: (click to hide/show)
Results:
good
2.{#foreach}
Go for each element in table:
{#foreach |VAR| as |NAME| [begin=|CODE|] [count=|CODE|] [step=|CODE|]}..{#else}..{#/for}
{#else} and begin, count, step are optional.
Examples:
Write all names:
{#foreach $T.table as record} {$T.record.name} {#/for}
Result:
Anne Amelia Polly Alice Martha
Write names begin with second:
{#foreach $T.table as record begin=1} {$T.record.name} {#/for}
Result:
Amelia Polly Alice Martha
Write only two names begin with second:
{#foreach $T.table as record begin=1 count=2} {$T.record.name} {#/for}
Result:
Amelia Polly
Using step:
{#foreach $T.table as record step=2} {$T.record.name} {#/for}
Result:
Anne Polly Martha
Example with {#else}.
{#foreach $T.table as record begin=8} {$T.record.name} {#else} none {#/for}
Result:
none
Foreach set variables:
$index - index of element in table
$iteration - id of iteration (next number begin from 0)
$first - is first iteration?
$last - is last iteration?
$total - total number of iterations
$key - key in object (name of element) (0.6.0+)
$typeof - type of element (0.6.0+)
Example:
Template is long, so I copy it to file: example_foreach1.tpl
Usage:
$("#result").setTemplateURL('example_foreach1.tpl');
$("#result").processTemplate(data);
It should give result:
Index Iterator Name Age First? Last?
1 0 Amelia 24 true false
2 1 Polly 18 false false
3 2 Alice 26 false false
4 3 Martha 25 false true
New (0.7.8+):
Break and Continue:
Example 1: Skip item with id == 3
{#foreach $T.table as i}{#if $T.i.id==3}{#continue}{#/if}{$T.i.name}<br/>{#/for}
Anne
Amelie
Alice
Martha
Example 2: Break at element with id == 3
{#foreach $T.table as i}{#if $T.i.id==3}{#break}{#/if}{$T.i.name}<br/>{#/for}
Anne
Amelie
New (0.6.0+):
#foreach on object:
$('#result').setTemplate('{#foreach $T as i}{$T.i$key} - {$T.i}<br/>{#/for}');
$('#result').processTemplate({'a':1, 'b':2, 'c':3});
Variable $key display key for current element in object.
New (0.7.0+):
#foreach with function:
{#foreach |FUNC| as |NAME| [begin=|CODE|] [end=|CODE|] [count=|CODE|] [step=|CODE|]}..{#else}..{#/for}
Loop work till out of range (set by begin, end, count) or function |FUNC| return undefined/null.
Examples:
f = function(step) {
if(step
> 100)
return null;
// stop if loop is too long
return "Step " + step;
};
$("#result").setTemplate("{#foreach f as
funcValue begin=10 end=20} {$T.funcValue}<br/> {#/for}");
$("#result").processTemplate();
Step 10
Step 11
Step 12
Step 13
Step 14
Step 15
Step 16
Step 17
Step 18
Step 19
Step 20
Try remove end limit, loop will be break on index 100.
Please use this features with carefull!
Code:
Data: (click to hide/show)
Results:
Anne Amelie Polly Alice Martha
3.{#for}
Syntax:
{#for |VAR| = |CODE| to |CODE| [step=|CODE|]}..{#else}..{#/for}
Using as:
{#for |variable| = |start| to |end| [step=|stepBy|]}..{#else}..{#/for}
|variable| - name of variable, ex: i, index (please not use
javascript's reserved words).
|start| - loop begin value, ex: 1, $T.start
|end| - loop end value, ex: 10, $T.end
|stepBy| - step, ex: 1, -1 (downto)
Examples:
{#for index = 1 to 10} {$T.index} {#/for}
Result:
1 2 3 4 5 6 7 8 9 10
{#for index = 1 to 10 step=3} {$T.index} {#/for}
Result:
1 4 7 10
{#for index = 1 to 10 step=-3} {$T.index} {#else} nothing {#/for}
Result:
nothing
{#for index = 10 to 0 step=-3} {$T.index} {#/for}
Result:
10 7 4 1
$("#result").setTemplate("{#for index = $T.start to $T.end}
{$T.content}{$T.index}<br/> {#/for}");
$("#result").processTemplate({start: 2,
end: 5, content: "ID:
"});
ID: 2
ID: 3
ID: 4
ID: 5
Code:
Data: (click to hide/show)
Results:
Message: 1
Message: 2
Message: 3
Message: 4
Message: 5
Message: 6
Message: 7
Message: 8
4.
{#include}
Include other template.
{#include |NAME| [root=|VAR|]}
Examples:
var template1 = $.createTemplate('<b>{$T.name}</b>
({$T.age})');
$('#result').setTemplate('{#include t1 root=$T.table[0]}', {t1: template1});
$('#result').processTemplate(data);
Result:
Anne (22)
var template1 = $.createTemplate('<div><b>{$T.name}</b>
({$T.age})</div>');
$('#result').setTemplate('{#foreach $T.table as row}{#include t1 root=$T.row}{#/for}', {t1: template1});
$('#result').processTemplate(data);
Result:
Anne (22)
Amelia (24)
Polly (18)
Alice (26)
Martha (25)
Code:
Data: (click to hide/show)
Results:
Anne (22)
5.
multiple
templates
Since jTemplates 0.2 allowed is using multiple templates
in one file.
Example:
*** main template *** (all part outside templates are invisible}
{#template MAIN}
<div>
<div>{$T.name.bold()}</div>
{#include table root=$T.table}
</div>
{#/template MAIN}
-----------------------------------------
*** main table ***
{#template table}
<table>
{#foreach $T as r}
{#include row root=$T.r}
{#/for}
</table>
{#/template table}
-----------------------------------------
*** for each row ***
{#template row}
<tr bgcolor="{#cycle values=['#AAAAEE','#CCCCFF']}">
<td>{$T.name.bold()}</td>
<td>{$T.age}</td>
<td>{$T.mail.link('mailto:'+$T.mail)}</td>
</tr>
{#/template row}
Above template in file: example_multitemplate1.tpl
Subtemplates can use different setting than main one. Current implementation
does not allow to change most settings, like filter_data, etc, thus this
feature are not really useful. Example:
{#template item runnable_functions=false}
...
{#/template list}
Code:
Data: (click to hide/show)
Results:
User list
|
Anne |
22 |
|
|
Amelie |
24 |
|
|
Polly |
18 |
|
|
Alice |
26 |
|
|
Martha |
25 |
jTemplates部分语法介绍的更多相关文章
- Swift翻译之-Swift语法入门 Swift语法介绍
目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...
- flex弹性布局语法介绍及使用
一.语法介绍 Flex布局(弹性布局) ,一种新的布局解决方案 可简单.快速的实现网页布局 目前市面浏览器已全部支持1.指定容器为flex布局 display: flex; Webkit内核的浏览器, ...
- freemarker语法介绍及其入门教程实例
# freemarker语法介绍及其入门教程实例 # ## FreeMarker标签使用 #####一.FreeMarker模板文件主要有4个部分组成</br>#### 1.文本,直接输 ...
- QSS类的用法及基本语法介绍
QSS类的用法及基本语法介绍 目录 1. 何为Qt样式表2. 样式表语法基础3. 方箱模型4. 前景与背景5. 创建可缩放样式6. 控制大小7. 处理伪状态8. 使用子部件定义微观样式8.1. 相对定 ...
- MD基本语法介绍
Markdown基本语法介绍 前言 文本编辑器一般用的有富文本编辑器(也就是Word)和md了,但是wold太过于花里胡哨很多功能都用不上,所以就选择md了,简单实用,一对于我来说一般就用标题和列表就 ...
- Markdown 语法介绍
Markdown 语法介绍 from:https://coding.net/help/doc/project/markdown.html 文章内容 1 Markdown 语法介绍 1.1 标题 1.2 ...
- css基本概念与css核心语法介绍
css基本概念 css是什么?不需要了解太多文字类介绍,记住css是层叠样式表,HTML是页面结构,css负责页面样式,javascrt负责静态页面的交互.CSS 能够对网页中元素位置的排版进行像素级 ...
- c基本语法介绍
c语言基本语法介绍 1.把常量定义为大写字母形式,是一个很好的编程实践.
- [安卓基础]011存储数据(中)——sqlite语法介绍
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
随机推荐
- .net的简易多线程处理
这篇文章是对几年前写的<Task及其异常处理的若干事项>的一些狗尾续貂的补充. 更简单的写法 几年前写的那篇文章很详细地描述了.net用Task对线程进行封装的相关技术.开一个新的线程去执 ...
- 转-基于NodeJS的14款Web框架
基于NodeJS的14款Web框架 2014-10-16 23:28 作者: NodeJSNet 来源: 本站 浏览: 1,399 次阅读 我要评论暂无评论 字号: 大 中 小 摘要: 在几年的时间里 ...
- python装饰器
今天看了装饰器的一些内容,感觉@修饰符还是挺抽象的. 装饰器就是在不用改变函数实现的情况下,附加的实现一些功能,比如打印日志信息等.需要主意的是装饰器本质是一个高阶函数,她可以返回一个函数. 装饰器需 ...
- 被逼着写的jquery工作日管理日历插件
因为工作原因,在我刚进入新公司之后,立马要求让我做一个jquery的插件demo.我的天,我面试的可是.net工程师啊.虽然以前接触过js,jquery,但也只是接触过一丢丢啊,没办法,只好硬着头皮上 ...
- AOP概述
了解AOP之前,先大概讲述一下SOC: Soc:Separation of concerns 关注分离点, 在不同的场景SOC有着不同的含义 Soc是一个过程:Soc是一个将功能点分解以尽量减小功能交 ...
- 让我们山寨一张Windows Azure Global的壁纸
用过国际版Azure的同学都见过一个显示了机器中主要信息的壁纸,而这个壁纸是通过Sysinternals的一款叫做bginfo来实现的,这款软件的好处是对于批量管理主(虚拟)机的管理员和使用方都很实用 ...
- JavaScript学习总结(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- angularjs之filter过滤器
现在公司用ionic,就是基于angularjs封装了一些api用于webapp,最近用的angularjs的filter确实省了很多代码,现在总结一下! ng比较鸡肋的过滤器,这里就一笔带过吧!鸡汤 ...
- 6.JAVA之GUI编程Action事件
功能:单击一个按钮实现关闭窗口: import java.awt.*; import java.awt.event.*; public class StudyAction { // 定义该图形所需的组 ...
- iOS: 在UIViewController 中添加Static UITableView
如果你直接在 UIViewController 中加入一个 UITableView 并将其 Content 属性设置为 Static Cells,此时 Xcode 会报错: Static table ...