zoukankan      html  css  js  c++  java
  • Jtemplates 基本语法

    jTemplates是一个基于JQuery的模板引擎插件,功能强大,有了他你就再不用为使用JS绑定数据集时发愁了。

    首先送上jTtemplates的官网地址:http://jtemplates.tpython.com/,你可以在这里下载代码和相关参考文档

    也可在http://download.csdn.net/detail/weisljl/4359244直接下载jTtemplates所需要的js文件

    在使用jTemplates时最好先定义模板,你可以把它放在textarea文本框里如:
    <textarea id="txtTemplate" style="display:none">
    <![CDATA[
    hello {$T.name}.
    ]]>
    </textarea>
    这样就定了一个简单的模板,下面再进行模板数据的定义:
    var mydata = { name: 'Anne', age: '20' };
    定义模板显示容器:
    <div id="result1"></div>
    通过简单的两行代码就可以完成模板的执行工作:
    $("#result1").setTemplateElement("txtTemplate");
    $("#result1").processTemplate(mydata);
    显示结果:
    hello Anne.

    如何?是不是很简单方便且实用!

    别急,这只是jTemplates强大功能的冰山一角。

    jTemplates包含三个预定全局变量,分别是$T、$P、$Q。$T为模板提供数据调用功能,$P为模板提供参数变量调用功能,$Q.version提供当前jTemplate的版本
    下面介绍将会用到这些功能。

    jTemplates还支持#if、#for、#cycle、#foreach、#include、#param标签,帮助你处理实现复杂的业务情形。
    1.#if 语法
    {#if |COND|}..{#elseif |COND|}..{#else}..{#/if}

    #if 示例:
    {#if $T.hello} hello world. {#/if}
    {#if 2*8==16} good {#else} fail {#/if}
    {#if $T.age>=18)} 成人了 {#else} 未成年 {#/if}
    {#if $T.list_id == 3} System list {#elseif $T.list_id == 4} Users List {#elseif $T.list_id == 5} Errors list {#/if}

    2.#for 语法:
    {#for |VAR| = |CODE| to |CODE| [step=|CODE|]}..{#else}..{#/for}


    {#for |variable| = |start| to |end| [step=|stepBy|]}..{#else}..{#/for}
    #for 示例:
    默认步长:{#for index = 1 to 10} {$T.index} {#/for}
    正向步长:{#for index = 1 to 10 step=3} {$T.index} {#/for}
    负向步长及空循环:{#for index = 1 to 10 step=-3} {$T.index} {#else} nothing {#/for}
    也可以在循环中使用变量:{#for index = $T.start to $T.end step=$T.step} {$T.index} {#/for}
    说明:{#else}是在{#for...}未能执行的时的输出内容。

    3.#foreach 语法:
    {#foreach |VAR| as |NAME| [begin=|CODE|] [count=|CODE|] [step=|CODE|]}..{#else}..{#/for}

    #foreach 示例:
    默认:{#foreach $T.table as record} {$T.record.name} {#/for}
    指定起始位置:{#foreach $T.table as record begin=1} {$T.record.name} {#/for}
    指定起始和循环次数:{#foreach $T.table as record begin=1 count=2} {$T.record.name} {#/for}
    指定步长:{#foreach $T.table as record step=2} {$T.record.name} {#/for}
    #foreach 内定环境变量:
    $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+)
    #foreach 示例所需要的数据:
    var data = {
    name: 'User list',
    list_id: 4,
    table: [
    {id: 1, name: 'Anne', age: 22, mail: 'anne@domain.com'},
    {id: 2, name: 'Amelie', age: 24, mail: 'amelie@domain.com'},
    {id: 3, name: 'Polly', age: 18, mail: 'polly@domain.com'},
    {id: 4, name: 'Alice', age: 26, mail: 'alice@domain.com'},
    {id: 5, name: 'Martha', age: 25, mail: 'martha@domain.com'}
    ]
    };
    (0.7.0+)版以后新增的功能,支持待循环集合用函数代替:
    {#foreach |FUNC| as |NAME| [begin=|CODE|] [end=|CODE|] [count=|CODE|] [step=|CODE|]}..{#else}..{#/for}
    例:
    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();
    #foreach在每次循环时请求的就是f函数,然后传递参数给f使用,并返回结果给funcValue变量

    4.#cycle 语法:
    {#cycle values=|ARRAY|}

    功能:提供周期性的调用,在循环中实现交替样式功能时可用到
    示例:
    {#cycle values=[1,2,3,4]}
    下面模板在执行循环时,就会周期性的调用#cycle数组中的值,这样就能实现行交替的效果:
    <table width="200">
    {#foreach $T.table as row}
    <tr bgcolor="{#cycle values=['#AAAAAA','#CCCCCC']}">
    <td>{$T.row.name.link('mailto:'+$T.row.mail)}</td>
    </tr>
    {#/for}
    </table>

    5.#include 语法:
    {#include |NAME| [root=|VAR|]}

    功能:提供子模板调用
    示例:
    {#template MAIN}
    {* this is comment *}
    {$T} {* $T == $T.toSource() *}
    <table>
    {#foreach $T.table as record}
    {#include ROW root=$T.record}
    {#/for}
    </table>
    {#/template MAIN}

    {#template ROW}
    <tr class="values=['bcEEC','bcCEE']} {#cycle">
    <td>{$T.name}</td>
    <td>{$T.mail}</td>
    </tr>
    {#/template ROW}
    说明:{#template MAIN} 是指定模板的主要部分,必不可少。
    {#template ROW}是定义一个名为“ROW”的子模板。
    {#include ROW root=$T.record}是主模板调用“ROW”子模板,并传递参数$T.record

    6.#param 语法:
    {#param name=|NAME| value=|CODE|}
    功能:定义模板内的局部变量参数,使用$P调用。
    示例:
    $("#result").setTemplate("{#param name=x value=888}{$P.x}");
    $("#result").processTemplate();
    输出结果:888
    示例:
    $("#result").setTemplate("{#param name=x value=$P.x+1}{$P.x}");
    $("#result").setParam('x', 777);
    $("#result").processTemplate();
    输出结果:778
    示例:
    $("#result").setTemplate("<ul>{#foreach $T.table as row}<li>{$P.x} {$T.row.name}</li>{#param name=x value=$P.x+3}{#/for}<ul>");
    $("#result").setParam('x', 1);
    $("#result").processTemplate(data);
    需要数据:
    var data = {
    name: 'User list',
    list_id: 4,
    table: [
    {id: 1, name: 'Anne', age: 22, mail: 'anne@domain.com'},
    {id: 2, name: 'Amelie', age: 24, mail: 'amelie@domain.com'},
    {id: 3, name: 'Polly', age: 18, mail: 'polly@domain.com'},
    {id: 4, name: 'Alice', age: 26, mail: 'alice@domain.com'},
    {id: 5, name: 'Martha', age: 25, mail: 'martha@domain.com'}
    ]
    };
    输出结果:
    # 1 Anne
    # 4 Amelia
    # 7 Polly
    # 10 Alice
    # 13 Martha 

  • 相关阅读:
    Triangle
    Pascal's Triangle II
    Pascal's Triangle
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
    [c++]this指针理解
    [oracle]一个最简单的oracle存储过程"proc_helloworld"
    Oracle 的 INSERT ALL和INSERT FIRST
    Linux2.6 内核的 Initrd 机制解析
    /boot/grub/menu.lst详解
  • 原文地址:https://www.cnblogs.com/kuyuyingzi/p/4266253.html
Copyright © 2011-2022 走看看