讓jquery.tmpl.js支持index序號


在寫Web程序時,想簡單處理會使用JS模板,常用的是Jquery的jquery.tmpl.js插件。整個插件還是比較好用的,后續有機會結合實際應用案例,分享下應用方法。

本次文章想分享的一點是其中的一個很小的細節:支持行標index。

具體的使用場景是:通過表格展示數據,同時第一列為序號,會存在刪除、新增行的按鈕操作。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <script src="../_common/jquery-1.12.2.min.js"></script>
 5 <script src="../_common/jquery.tmpl.min.js"></script>
 6 </head>
 7 <body>
 8 <table id="list">
 9     <tr class="tableHead">
10         <td>序號</td>
11         <td>名稱</td>
12         <td>代碼</td>
13         <td>類型</td>       
14     </tr>
15 </table>
16 <script id="tmp" type="text/x-jquery-tmpl">
17     <tr>
18         <td>${Number(id)+1}</td>
19         <td>${name}</td>
20         <td>${code}</td>
21         <td>${type}</td>
22     </tr>
23 </script>
24 <script type="text/javascript">
25     $(document).ready(function () {
26         var list = [
27             { id:"0", name: "javascript", code: "001", type: "web" },            
28             { id:"1", name: "asp.net", code: "004", type: "server" },
29             { id:"2", name: "sql", code: "005", type: "db" }
30         ];
31         $("#tmp").tmpl(list).appendTo("#list");
32     });
33 </script>
34 </body>
35 </html>

如上,如果要實現行序號,則需要在數據集合中加入一個屬性返回行號,這樣就會導致非常麻煩。當存在刪除或新增行時,若要刷新展示,還需要刷新數據的id屬性,不方便操作。其實如果能夠利用table的rowindex或者其他的方式,可以較好的利用dom屬性或數組index來處理,那就會方便很多了。

基於此思路,我們改造jquery.tmpl.js的tmpl函數。如下圖,對於未壓縮的插件源碼,處理如下:

為了避免數據集合中存在index對象,故特意加了一個$以作區分,使用時用$index屬性進行取值即可。

若是需要改造jquery.tmpl.min.js,由於做了代碼混淆,搜索map函數,第一個調用的地方按照如上邏輯調整即可。

調整后的調用方式:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <script src="../_common/jquery-1.12.2.min.js"></script>
 5 <script src="../_common/jquery.tmpl.min.js"></script>
 6 </head>
 7 <body>
 8 <table id="list">
 9     <tr class="tableHead">
10         <td>序號</td>
11         <td>名稱</td>
12         <td>代碼</td>
13         <td>類型</td>       
14     </tr>
15 </table>
16 <script id="tmp" type="text/x-jquery-tmpl">
17     <tr>
18         <td>${$index+1}</td>
19         <td>${name}</td>
20         <td>${code}</td>
21         <td>${type}</td>
22     </tr>
23 </script>
24 <script type="text/javascript">
25     $(document).ready(function () {
26         var list = [
27             { name: "javascript", code: "001", type: "web" },            
28             { name: "asp.net", code: "004", type: "server" },
29             { name: "sql", code: "005", type: "db" }
30         ];
31         $("#tmp").tmpl(list).appendTo("#list");
32     });
33 </script>
34 </body>
35 </html>

如上為新的調用方式,是不是方便了很多。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM