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

API

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)

API

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

anne@domain.com

Amelie

24

amelie@domain.com

Polly

18

polly@domain.com

Alice

26

alice@domain.com

Martha

25

martha@domain.com

API

jTemplates部分语法介绍的更多相关文章

  1. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  2. flex弹性布局语法介绍及使用

    一.语法介绍 Flex布局(弹性布局) ,一种新的布局解决方案 可简单.快速的实现网页布局 目前市面浏览器已全部支持1.指定容器为flex布局 display: flex; Webkit内核的浏览器, ...

  3. freemarker语法介绍及其入门教程实例

    # freemarker语法介绍及其入门教程实例 # ## FreeMarker标签使用 #####一.FreeMarker模板文件主要有4个部分组成</br>####  1.文本,直接输 ...

  4. QSS类的用法及基本语法介绍

    QSS类的用法及基本语法介绍 目录 1. 何为Qt样式表2. 样式表语法基础3. 方箱模型4. 前景与背景5. 创建可缩放样式6. 控制大小7. 处理伪状态8. 使用子部件定义微观样式8.1. 相对定 ...

  5. MD基本语法介绍

    Markdown基本语法介绍 前言 文本编辑器一般用的有富文本编辑器(也就是Word)和md了,但是wold太过于花里胡哨很多功能都用不上,所以就选择md了,简单实用,一对于我来说一般就用标题和列表就 ...

  6. Markdown 语法介绍

    Markdown 语法介绍 from:https://coding.net/help/doc/project/markdown.html 文章内容 1 Markdown 语法介绍 1.1 标题 1.2 ...

  7. css基本概念与css核心语法介绍

    css基本概念 css是什么?不需要了解太多文字类介绍,记住css是层叠样式表,HTML是页面结构,css负责页面样式,javascrt负责静态页面的交互.CSS 能够对网页中元素位置的排版进行像素级 ...

  8. c基本语法介绍

    c语言基本语法介绍 1.把常量定义为大写字母形式,是一个很好的编程实践.

  9. [安卓基础]011存储数据(中)——sqlite语法介绍

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

随机推荐

  1. ubuntu 14.10 lts 64-bits环境下使用Android Studio

    距离google发布android studio 1.0正式版已经两个月左右了.由于一直习惯使用eclipse+ADT的模式,而且曾在windows下试用一次Android Studio预览版,感觉卡 ...

  2. JAVA通信系列三:Netty入门总结

    一.Netty学习资料 书籍<Netty In Action中文版> 对于Netty的十一个疑问http://news.cnblogs.com/n/205413/ 深入浅出Nettyhtt ...

  3. Leetcode 笔记 113 - Path Sum II

    题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...

  4. 在网上摘录一段对于IOC的解析,比较直观,大家观摩观摩

    其实IoC非常简单,基本思想就是面向接口的编程,只是老外给起了个名字名充分利用之. 简单的说,传统模式下,如果你要用钱,你需要去银行取,IoC模式下,银联在你家安了一个取款机,你直接找取款机要钱就可以 ...

  5. Java常量的应用

    所谓常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变. 语法:final 常量名 = 值; 使用fianl关键字 常量名 值 final String a1 = &qu ...

  6. ★Kali信息收集~4.DNS系列

    ★.1host:DNS信息 参数: 一般情况下,host查找的是A,AAAA,和MX的记录 案例: DNS服务器查询  host -t ns 域名 A记录和MX记录查询  host 域名(host - ...

  7. 我为NET狂官方群福利贴:一些常用的工具:2016-08-01更新

    本次更新下载:http://pan.baidu.com/s/1skXzG4H 源码文档见官方群(以下为8.1更新内容) 逆天工具 CDN 资源库 国内 http://www.bootcdn.cn/ h ...

  8. ASP.NET OWIN OAuth:遇到的2个refresh token问题

    之前写过2篇关于refresh token的生成与持久化的博文:1)Web API与OAuth:既生access token,何生refresh token:2)ASP.NET OWIN OAuth: ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(7)-MVC与EasyUI DataGrid

    系列目录 本节知识点 为了符合后面更新后的重构系统,文章于2016-11-1日重写 EasyUI读取MVC后台Json数据 开始实现 我们的系统似乎越来越有趣了 首先从前端入手,开打View下面的Sh ...

  10. 推荐13款javascript模板引擎

    javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...