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. Windows平台分布式架构实践 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  2. React-Native 动画优化

    前言 动画对于客户端来说是非常重要的一部分,直接影响到应用的用户体验.前端对于动画优化通常使用CSS3样式来实现动画,以利用GPU加速特性.而React-Native由于渲染模式的不同,无法使用CSS ...

  3. 一步一步使用ABP框架搭建正式项目系列教程之本地化详解

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...

  4. ceph架构剖析

    unitedstack有云 :https://www.ustack.com/blog/ceph_infra/

  5. backup1:开始数据库备份

    数据库备份分为数据文件备份和日志文件备份,数据文件的备份分为:完整备份和差异备份.在SQL Server 2012中,能够将数据分布式备份到不同的存储设备上,一般情况,只将数据备份到一个备份文件(.b ...

  6. 阿里云自定义日记文件无法通过ftp下载

    异常处理汇总 ~ 修正果带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4599258.html 有可能是个例,xftp不行(对linux支持很好),Cute ...

  7. 【原】使用Bmob作为iOS后台开发心得——云端代码添加其他User的Relation关系

    本文转载请注明出处 —— polobymulberry-博客园 问题描述 我在User表中增加了两个列,分别为“我关注的人”(Relation关系)和“我的粉丝”(Relation关系)当我关注某个人 ...

  8. 爬虫技术 -- 进阶学习(十)网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp)

    最近在弄网页爬虫这方面的,上网看到关于htmlagilitypack搭配scrapysharp的文章,于是决定试一试~ 于是到https://www.nuget.org/packages/Scrapy ...

  9. C#设计模式:单件(例)模式 -- 类也玩计划生育

    这里写的代码,相当于<Head First 设计模式>的读书笔记,原书是java的,自己在学习的过程中将其翻译为C#: (一)剖析经典的单件模式实现 单件模式 -- 确保一个类只有一个实例 ...

  10. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...