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; } ...
随机推荐
- 简述 OAuth 2.0 的运作流程
本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...
- ASP.NET Web API 过滤器创建、执行过程(一)
ASP.NET Web API 过滤器创建.执行过程(一) 前言 在上一篇中我们讲到控制器的执行过程系列,这个系列要搁置一段时间了,因为在控制器执行的过程中包含的信息都是要单独的用一个系列来描述的,就 ...
- ABP框架 - 实体
文档目录 本节内容: 实体类 聚合根类 领域事件 约定的接口 审计 软删除 活跃/消极 实体 实体变化事件 IEntity 接口 实体是DDD一个核心的概念.Eric Evans是这么描述的:“一个对 ...
- FastCgi与PHP-fpm之间的关系
web server(比如说nginx)只是内容的分发者.比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据.好了,如果现在请 ...
- 将Json数据保存在静态脚本文件中读取
一些常用的数据例如一些网站的区域信息被改变的可能性不大,一般不通过请求获取,于是我们选择存在静态文件中,例如以下Demo: 1.动态加载Json数据显示到前台 [HttpPost] public Ac ...
- Notes:SVG(4)基于stroke-dasharray和stroke-dashoffset圆形进度条
stroke-dasharray:定义描边的虚线长度,如果提供奇数个,则会自动复制该值成偶数 stroke-dashoffset:定义虚线描边的偏移量(在路径开始的前面,看不到) 实现如下所示 svg ...
- Android随笔之——Android时间、日期相关类和方法
今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...
- (福利)分享一个用android编写的简单的APP——爱吖天气
这是本人随便编写的一个天气的APP,超级简单. 项目已同步至:https://github.com/nanchen2251/AiYaWeatherDemo 基本实现了天气查看,闪屏引导,天气基本信息, ...
- 如何只用CSS做到完全居中
我们都知道 margin:0 auto; 的样式能让元素水平居中,而 margin: auto; 却不能做到垂直居中--直到现在.但是,请注意!想让元素绝对居中,只需要声明元素高度,并且附加以下样式, ...
- TeamCity : Build 基本配置
前文中我们在 TeamCity 中创建了一个项目 HelloApp,并在这个项目中创建了一个名为 HelloAppDailyBuild 的Build 用来编译 demo 程序.本文我们将详细介绍 Bu ...