zoukankan      html  css  js  c++  java
  • JTemplate使用2

    1.通过JS获取JSON形式的数据;

    2.获取一个HTML模板,与数据相结合,生成页面HTML。

    最基础的应用:

    1.导入jTemplates.js:
    <SCRIPT type="text/javascript" src="JS/jquery-jtemplates.js"></SCRIPT>

    2.html中的代码:<div id="jTemplatesTest"></div>

    3.模板代码:

    < textarea id="template" >

    你好:{$T.name},你{$T.age}岁了。

    </textarea>

    4.JS数据:var profile={name:"XXX",age:"24"};

    5.调用方法:

      $("#jTemplatesTest").setTemplateElement("template");//template指模板容器(这里是textarea)的ID;
    也可以直接将innerHtml传入,譬:
    var abc ='<textarea id="template" >你好:{$T.name},今天你{$T.age}岁了。</textarea>';

    $("#jTemplatesTest").setTemplateElement(abc);
      $("#jTemplatesTest").processTemplate(profile);//让jTemplatesTest读取profile这个数据。

    6.最终输出:<div id="jTemplatesTest">你好:XXX,你24岁了。</div>

    循环输出:

    数据:

    var data = [{age:1,name:'小A'},{age:2,name:'小B'},{age:3,name:'小C'},{age:4,name:'小D'},{age:5,name:'小E'}];


    模板:

    < textarea id="template" >

          {#foreach $T as record}

         你好:{$T.name},你{$T.record.age}岁了。<br />

         {#/for}

    </textarea>

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

    一 , 简单介绍

    它是一个基于jQuery开发的javascript模板引擎。它主要的作用如下:

    1. 通过JavaScript获取JSON形式的数据;

    2. 获取一个HTML模板,与数据相结合,生成页面HTML。

     二 , 快速上手

    先来看一个简单的例子:

    <script type="text/javascript" src="jquery-1.2.6.pack.js"></script>
    <script type="text/javascript" src="jquery-jtemplates.js"></script>

    <script type="text/javascript">
      $(document).ready(function() {
       //初始化数据
       var data = {
        name: '用户列表',
        list_id: '编号89757',
        table: [
         {id: 1, name: 'Rain', age: 22, mail: 'cssrain@domain.com'},
         {id: 2, name: '皮特', age: 24, mail: 'cssrain@domain.com'},
         {id: 3, name: '卡卡', age: 20, mail: 'cssrain@domain.com'},
         {id: 4, name: '戏戏', age: 26, mail: 'cssrain@domain.com'},
         {id: 5, name: '一揪', age: 25, mail: 'cssrain@domain.com'}
        ]
       };
       // 附上模板
       $("#result1").setTemplateElement("template");
       // 给模板加载数据
       $("#result1").processTemplate(data);
      });
    </script>

     <!-- 模板内容 -->
     <textarea id="template" >
      <strong>{$T.name} : {$T.list_id}</strong>
      <table>
             <tr>
         <th>编号</th>
         <th>姓名</th>
                        <th>年龄</th>
         <th>邮箱</th>
       </tr>
       {#foreach $T.table as record}
       <tr>
         <td>{$T.record.id}</td>
         <td>{$T.record.name}</td>
                        <td>{$T.record.age}</td>
         <td>{$T.record.mail}</td>
       </tr>
       {#/for}
      </table>
     </textarea>

    <!-- 输出元素 -->
     <div id="result1" ></div>

    上面代码中,先导入了jQuery.js,然后导入jtemplates.js。

    接下来新建了一个data数据的json对象。

    var data = {
         ......
     };

    然后在HTMl页面上增加一个 输出元素  和 一个模板元素:

    最后在JS给输出元素 附加模板 和 数据。

    这样,运行代码后,出现如下图所示界面。

      三 , 加载模板

      这次把模板放到一个单独的页面中,而不是直接写在页面里。

    新建一个template.html,放入以下代码:

    <strong>{$T.name} : {$T.list_id}</strong>
    <table>
        <tr>
       <th>编号</th>
       <th>姓名</th>
                <th>年龄</th>
       <th>邮箱</th>
     </tr>
     {#foreach $T.table as record}
     <tr>
       <td>{$T.record.id}</td>
       <td>{$T.record.name}</td>
                <td>{$T.record.age}</td>
       <td>{$T.record.mail}</td>
     </tr>
     {#/for}
    </table>

    然后新建一个json文件,名称为cs.json,代码如下:

    {
     name: "用户列表",
     list_id: "编号89757",
        table: [
        {id: 1, name: 'Rain', age: 22, mail: 'cssrain@domain.com'},
        {id: 2, name: '皮特', age: 24, mail: 'cssrain@domain.com'},
        {id: 3, name: '卡卡', age: 20, mail: 'cssrain@domain.com'},
        {id: 4, name: '戏戏', age: 26, mail: 'cssrain@domain.com'},
        {id: 5, name: '一揪', age: 25, mail: 'cssrain@domain.com'}
     ]
    }

    在jQuery中,可以通过$.ajax()方法来加载 json文件,代码如下:


    <script type="text/javascript">
    $(function(){
     $.ajax({
         type:       "post",
         dataType:   "json",
         url:        "cs.json",
        success:    function(data){
                        .....
                    }
     });
    });
    </script>

    在success回调函数里,首先需要设置模板,然后需要添加数据。如下代码所示:

     success:    function(data){

                       // 设置模板
                         $("#result1").setTemplateURL("template.html?date="+(+new Date()), null, {filter_data: true});
                       //  加载数据
                         $("#result1").processTemplate(data);
                    }
     }

    完整代码如下所示:

    $(function(){
     $.ajax({
         type:       "post",
         dataType:   "json",
         url:        "cs.json",
        success:    function(data){
                        $("#result1").setTemplateURL("template.html?date="+(+new Date()), null, {filter_data: true});
                        $("#result1").processTemplate(data);
                    }
     });
    });

    运行代码后,也可以得到上图的界面。

    四 ,小结

    关于 new Date().getTime()的简写方式:可以参考这篇文章:

    http://www.cssrain.cn/article.asp?id=1116

    CssRain提供的几个例子,按照官方写的:

    点击下载此文件

    jtemplates官方首页 :

    http://jtemplates.tpython.com/

    官方的几个例子:
    1. Simple template (see source as description)
    example1.html

    2. Example 1 + multiple elements + parameters
    example2.html

    3. Example 1 (Valid XHTML 1.1 !)
    example3.html

    4. Multitemplate (Valid XHTML 1.1)
    example4.html



    调用:

    $("#Panel").setTemplateElement("template");
    $("#Panel").processTemplate(data); 

  • 相关阅读:
    165. Compare Version Numbers
    163. Missing Ranges
    162. Find Peak Element
    161. One Edit Distance
    156. Binary Tree Upside Down
    工欲善其事-Eclipse设置
    2016年1月15日面试某互联网公司总结(一)
    以前用SQL实现的机构职能树,再看看
    Sublime3学习笔记
    Android之EACCES (Permission denied)与Permission denied异常探密
  • 原文地址:https://www.cnblogs.com/guozhe/p/2352625.html
Copyright © 2011-2022 走看看