热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jTemplates部分语法介绍

1.{#if}{#if|COND|}..{#elseif|COND|}..{#else}..{#if}Examples:{#if2*816}good{#else}fa
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}
{#/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}
{#/for}

 

Anne
Amelie

 



New (0.6.0+):
#foreach on object:

$('#result').setTemplate('{#foreach $T as i}{$T.i$key} - {$T.i}
{#/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}
{#/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}
{#/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('{$T.name} ({$T.age})');
$('#result').setTemplate('{#include t1 root=$T.table[0]}', {t1: template1});
$('#result').processTemplate(data);



Result:

Anne (22)

 

var template1 = $.createTemplate('

{$T.name} ({$T.age})
');
$('#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}
 


 
{$T.name.bold()}

  {#include table root=$T.table}
 

{#/template MAIN}

-----------------------------------------

*** main table ***
{#template table}
 
  {#foreach $T as r}
  {#include row root=$T.r}
  {#/for}
 

{#/template table}

-----------------------------------------

*** for each row ***
{#template row}
  bgcolor="{#cycle values=['#AAAAEE','#CCCCFF']}">
  {$T.name.bold()}
  {$T.age}
  {$T.mail.link('mailto:'+$T.mail)}
 
{#/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

 


推荐阅读
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • PHP 实现多级树形结构:构建无限层级分类系统
    在众多管理系统中,如菜单、分类和部门等模块,通常需要处理层级结构。为了高效管理和展示这些层级数据,本文将介绍如何使用 PHP 实现多级树形结构,并提供代码示例以帮助开发者轻松实现无限分级。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 在 Android 开发中,通过 Intent 启动 Activity 或 Service 时,可以使用 putExtra 方法传递数据。接收方可以通过 getIntent().getExtras() 获取这些数据。本文将介绍如何使用 RoboGuice 框架简化这一过程,特别是 @InjectExtra 注解的使用。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 本文介绍了一个优化过的JavaScript函数,用于从API获取电影信息并渲染到网页上,同时注册Service Worker以提升用户体验和性能。 ... [详细]
  • 优化JavaScript中的多条件判断逻辑
    本文探讨了在JavaScript中遇到复杂逻辑判断时,如何通过不同的方法优化if/else或switch语句,以提高代码的可读性和可维护性。 ... [详细]
  • 并发环境下的集合元素移除技巧与注意事项
    探讨在并发编程中对集合进行元素移除操作时应注意的关键点,包括使用迭代器的安全方法以及避免常见错误。 ... [详细]
author-avatar
手机用户2502933677
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有