zoukankan      html  css  js  c++  java
  • JavaScript与JSON数据交互实现的基于HTML的模板

    JavaScript与JSON数据交互实现的基于HTML的模板

    每每完成一个项目或多或少总是有些收获的,有时候有很多好多东西需要积累分享,这样以后的项目开发就会越来越效率的哈,这不现在准备用以前项目开发中用到的东西,觉得还不错,整理了写出来分享下。写文章前我也在网上找了挺多Javascript模板之类的文章,没发现太多满意的,就找到一篇可着得给力点儿的,兴许还有许多给力的没发现,欢迎你推荐分享,好了,费话不多说,切入正题了。

    首先准备我们要的Json数据,简单点儿的来这第一串数据

    复制代码
     1 var json ={
     2     "dataInfo": [
     3         {
     4             "name": "李红",
     5             "sex": "女",
     6             "age": "12"
     7         },
     8         {
     9             "name": "李四",
    10             "sex": "男",
    11             "age": "18"
    12         },
    13         {
    14             "name": "张明",
    15             "sex": "男",
    16             "age": "98"
    17         }
    18     ]
    19 }
    复制代码

    接下来看看HTML模板长啥样儿

    复制代码
     1  <table border="1" style=" 500px;">
     2                 <tbody></tbody>
     3                 <tbody id="body" style="display: none;">
     4                     <tr>
     5                         <td>{$name$}</td>
     6                         <td>{$sex$}</td>
     7                         <td>{$age$}</td>
     8                     </tr>
     9                 </tbody>
    10 </table>
    复制代码

    OK,接下来就是我们的JavaScript代码了,先定义名为MiniCore的命名空间,JSON数据定义在Box里,剩下的工作就是替换模板循环数据追加的工作了

    View Code
     1 //1、命名空间
     2 var MiniCore = {};
     3 MiniCore.Box = function () {
     4     this.Data = {};
     5 }
     6 //2、定义替换$key$为数据的模板
     7 String.prototype.ReplaceTemplate = function (key, recnt)
     8 {
     9     var content = this; 
    10     var tkey = "content.replace(/\\{\\$" + key + "\\$\\}/g,'" + recnt + "')";
    11     var tkey2 = "content.replace(/\\%7B\\$" + key + "\\$\\%7D/g,'" + recnt + "')";
    12     try {
    13         content = eval(tkey);
    14     } catch (e) {
    15         tkey = "content.replace(/\\{\\$" + key + "\\$\\}/g,'')";
    16         content = eval(tkey);
    17     }
    18     try {
    19         content = eval(tkey2);
    20     } catch (e) {
    21         tkey2 = "content.replace(/\\%7B\\$" + key + "\\$\\%7D/g,'')";
    22         content = eval(tkey2);
    23     }
    24     return content;
    25 }
    26 //3、运用模板将$key$全替换成数据(本例中<tr>标签中含有$key$替换成json数据)
    27 String.prototype.ReplaceJson= function (json)
    28 {
    29     if (json == null) { return this };
    30     var tmp = this;
    31     for (n in json) {       
    32         if (json[n] == null) {
    33 
    34             tmp = tmp.ReplaceTemplate(n, "");
    35         }
    36         else {
    37             tmp=tmp.ReplaceTemplate(n,json[n]);
    38         }
    39     } 
    40     return tmp;
    41 }
    42 //4、定义移除模板的函数
    43 function Clear(templateID)
    44 {
    45     var parent = $("#" + templateID).prev(); 
    46     var tid = "ID" + new Date().getTime();
    47     parent.attr("ID", tid);
    48     $("#" + tid + ">[id!='" + templateID + "']").remove();
    49     return parent;    
    50 }
    51 //5、循环绑定追加Json数据
    52 MiniCore.Box.prototype.Bind = function (templateID)
    53 {
    54     var instance = Clear(templateID);
    55     var templateHtml = $("#" + templateID).html();   
    56     for (var i = 0; i < this.Data.length; i++) {        
    57         instance.append(templateHtml.ReplaceJson(this.Data[i]));
    58     }
    59     return this;
    60 }

    前端调用非常简单的

    1     $(function () {
    2             var box = new MiniCore.Box();
    3             box.Data = json.dataInfo;
    4             box.Bind("body");
    5         });

    前端调用,几行代码就ok

    1  $(function () {
    2             var box = new MiniCore.Box();
    3             box.Data = json.dataInfo;
    4             box.Bind("body");
    5  });

    就这么简单,一切搞定,还是上张效果图

    再看看生成的代码截图,到这儿你是否明白了呢

    好了,代码基本就这些,也不多吧,Js代码提取出来也就可以用了。如果觉得不错,欢迎转载,请注明出处http://www.cnblogs.com/gtzhou/archive/2013/03/30/2990810.html,如果有更好的实现也期待你的分享。

     
     
    分类: jQueryASP.NET
  • 相关阅读:
    细节回顾 p标签的嵌套问题
    面向对象编程
    深浅拷贝
    数据交互 jsonp插件
    数据交互 跨域问题
    数据交互 axios
    数据交互 jQuery ajax
    数据交互 后端代码
    数据交互 http请求 xhr
    Windows安装Node.js报错:2503、2502的解决方法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2992464.html
Copyright © 2011-2022 走看看