好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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 ,如果有更好的实现也期待你的分享。

 

 

分类:  jQuery ,  ASP.NET

标签:  JavaScript ,  JSON数据 ,  HTML模板

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于JavaScript与JSON数据交互实现的基于HTML的模板的详细内容...

  阅读:50次