jTemplates的教程,包括{#if}{#foreach}{#for}的简单使用

最近在做一些局部刷新的分页工作,一般不使用既成的插件的话,就是在脚本里面重新渲染一个局部的html,把需要局部分页的模块重写一遍,还需要在控制器里再定义一个方法返回所需的局部数据,这种做法相当冗余,所以在这里推荐jTemplates的使用。

jTemplates是一个基于Jquery的js模板引擎插件。该引擎全部代码由JS实现,可以配合AJAX,JSON一起协同工作,模板内容可以用JS代码,实现了活动更新,可以自动从服务器更新模板生成的内容。

需要引用jquery.js和jquery-jtemplates.js两个脚本,可以到jTemplates官网下载,附地址(点击导航栏的“Download”进入下载页,选择所需版本下载即可):

http://jtemplates.tpython.com/

 

直接在我这里也可以下载哦~附链接:jTemplates_0_8_4

 

话不多说,直接贴代码哈~

页面html以及js代码:

 1 @{
 2     Layout = null;
 3 }
 4 
 5 <!DOCTYPE html>
 6 
 7 <html>
 8 <head>
 9     <meta name="viewport" content="width=device-width" />
10     <title>Index</title>
11     <script src="~/Scripts/jquery.js"></script>
12     <script src="~/Scripts/jquery-jtemplates.js"></script>
13     <script type="text/javascript">
14         $(document).ready(function () {
15 
16             debugger;
17             var val = $("#JsonInfos").val();
18             var parVal = JSON.parse(val);
19             var data = {
20                 TotalCount: 64,
21                 Lists: parVal,
22             };
23             // 设置模板
24             $("#result").setTemplateElement("templateContainer");
25             //$("#result").setTemplate('<a href="#" onclick="foo({#var $T})">click me</a>');
26 
27             // 处理模板
28             $("#result").processTemplate(data);
29 
30             $('.btnClick').on('click', function () {
31                 var str = $(this).data('name');
32                 alert(str);
33             });
34         });
35     </script>
36 </head>
37 <body>
38     <input id="JsonInfos" type="text" value="@ViewBag.JsonInfos" style="display:none;" />
39     <div id="result">
40     </div>
41     <textarea id="templateContainer" style="display: none;">
42         <table border="1">
43             <tr>
44                 <td>
45                     姓名
46                 </td>
47                 <td>
48                     年齡
49                 </td>
50                 <td>
51                     时间
52                 </td>
53                 <td></td>
54             </tr>
55             {#if $T.Lists != null && $T.Lists.length > 0}
56             {#foreach $T.Lists as row}
57             <tr>
58                 <td>
59                     {$T.row.Name}
60                 </td>
61                 <td>
62                     {$T.row.Age}
63                 </td>
64                 <td>
65                     {$T.row.CreateDate}
66                 </td>
67                 <td>
68                     <a href="#" class="btnClick" data-name="{$T.row.Name}">click me</a>
69                 </td>
70             </tr>
71             {#/for}
72             @*{#for i = 0 to $T.Lists.length-1}
73                 <tr>
74                     <td>
75                         {$T.Lists[$T.i].Name}
76                     </td>
77                     <td>
78                         {$T.Lists[$T.i].Age}
79                     </td>
80                     <td>
81                         {$T.Lists[$T.i].CreateDate}
82                     </td>
83                 </tr>
84                 {#/for}*@
85             {#else}
86             <tr><td colspan="3">暂无数据!!</td></tr>
87             {#/if}
88 
89         </table>
90     </textarea>
91 </body>
92 </html>
Index.cshtml

后台控制器的代码:

 1 using Newtonsoft.Json;
 2 using System.Collections.Generic;
 3 using System.Web.Mvc;
 4 
 5 namespace jTemplateTest.Controllers
 6 {
 7     public class jTemplateTestController : Controller
 8     {
 9         // GET: jTemplateTest
10         public ActionResult Index()
11         {
12             List<Info> infos = new List<Info>()
13             {
14                 new Info {Name = "Tomcat", Age = "10", CreateDate = "2017-08-03 10:34:37"},
15                 new Info {Name = "Jerry", Age = "35", CreateDate = "2017-08-03 10:34:37"},
16                 new Info {Name = "Mike", Age = "22", CreateDate = "2017-08-03 10:34:37"},
17                 new Info {Name = "Jim", Age = "54", CreateDate = "2017-08-03 10:34:37"},
18                 new Info {Name = "Merry", Age = "12", CreateDate = "2017-08-03 10:34:37"}
19             };
20             ViewBag.JsonInfos = JsonConvert.SerializeObject(infos);
21             return View();
22         }
23     }
24 
25     public class Info
26     {
27         public string Name { get; set; }
28         public string Age { get; set; }
29         public string CreateDate { get; set; }
30     }
31 }
jTemplateTestController.cs

我这边数据是从后台传到前台,以json字符串格式传到后台,再接收赋值给data,也可以直接前台写入死数据。

这边引入了Newtonsoft.json的序列化方法,需要引用Newtonsoft.Json.dll(点击可下载)。

 

/******************************我是可爱的分割线******************************/

 

posted @ 2017-08-29 17:24  Merryan  阅读(2203)  评论(3编辑  收藏  举报