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; } ...
随机推荐
- Unit Of Work的设计
在DDD开发过程中,一个良好的Uow设计必不可少,我心目中的Uow设计应该具备以下几点: 1.有着良好的抽象,有着恰如其分的命名: 2.能够应付不同的组件,比如你的系统中可能会存在EfUnitOfWo ...
- 【技巧】使用weeman来做一个钓鱼网页
本文来自网友836834283 对玄魂工作室的投稿. 工具项目地址:https://github.com/Hypsurus/weeman/ 克隆地址:https://github.com/Hypsur ...
- [数据库基础]——图解JOIN
阅读导航 一.概要 二.JOIN分类 三.JOIN分类详解 一.概要 JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操 ...
- xib文件的加载方法
xib文件的加载方法 以UITableViewCell的cell为例 很多时候因为系统的cell无法满足我们的日常需求,我们都会自定义cell 因为cell的界面比较固定,所以通常都会选择用xib来描 ...
- 基于DotNetOpenAuth的OAuth实现示例代码: 获取access token
1. 场景 根据OAuth 2.0规范,该场景发生于下面的流程图中的(D)(E)节点,根据已经得到的authorization code获取access token. 2. 实现环境 DotNetOp ...
- 应用新安全组 - 每天5分钟玩转 OpenStack(116)
Neutron 默认的安全组规则会禁止掉所有从外面访问 instance 的流量. 本节我们会修改安全组的配置,允许 ping 和 ssh instance.有两种方法可以达到这个目的: 1. 修改 ...
- Python中的类、对象、继承
类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...
- 打造高效前端工作环境-tmuxinator
前言 虽然tmux能让我们方便组织工作环境,但每次重新打开会话时都需要手动重新创建窗口.窗格和执行各种程序,能不能像VS那样以工程为单位保存窗口.窗格和各种所需执行的程序的信息呢?tmuxinato ...
- 为Guid数据类型的属性(property)赋值
先来看看数据库表中的字段设计: 在数据库的数据类型为uniqueidentifier. 而在程序中对应的数据类型为GUID. property有get和set,也就是说能获取值也可以赋值.
- spring框架之javaconfig
简介:随着java5的推出,加上当年基于纯java annotation的依赖注入框架Guice的出现,spring推出并持续完善了基于java代码和annotation元信息的依赖关系绑定描述方法, ...