亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JsRender實用入門教程

2019-11-20 13:58:29
字體:
來源:轉載
供稿:網友

本文是一篇JsRender的實用入門教程,實例講述了tag else使用、循環嵌套訪問父級數據等知識點。分享給大家供大家參考。具體如下:

前言

JsRender是一款基于jQuery的JavaScript模版引擎,它具有如下特點:

  ?  簡單直觀

  ?  功能強大

  ?  可擴展的

  ?  快如閃電

這些特性看起來很厲害,但幾乎每個模版引擎,都會這么宣傳。。。

由于工作需要,小菜才接觸到此款模版引擎。使用了一段時間,發現它確實比較強大,但小菜覺得有些地方強大的過頭了,反倒讓人覺得很難理解。

另一方面,JsRender的官方文檔比較詳細,但其他資料出奇的少,遇到點什么問題,基本搜不到,不僅僅是相關問題搜不到,幾乎就是沒有結果。

再加上JsRender有些地方確實是不好理解,所以急需小菜分享一些“最佳實踐”。

基于最近一段時間的使用,小菜總結了一些實用經驗,當然,這些經驗在官方文檔上是找不到的。

嵌套循環使用#parent訪問父級數據(不推薦)

復制代碼 代碼如下:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>嵌套循環使用#parent訪問父級數據 --- by 楊元</title>
    <style>
    </style>
   
  </head>
  <body>
   
    <div>
      <table>
        <thead>
          <tr>
            <th width="10%">序號</th>
            <th width="10%">姓名</th>
            <th width="80%">家庭成員</th>
          </tr>
        </thead>
        <tbody id="list">
         
        </tbody>
      </table>
    </div>
   
    <script src="jquery.min.js"></script>
    <script src="jsviews.js"></script>
   
    <!-- 定義JsRender模版 -->
    <script id="testTmpl" type="text/x-jsrender">
      <tr>
        <td>{{:#index + 1}}</td>
        <td>{{:name}}</td>
        <td>
          {{for family}}
            {{!-- 利用#parent訪問父級index --}}
            <b>{{:#parent.parent.index + 1}}.{{:#index + 1}}</b>
            {{!-- 利用#parent訪問父級數據,父級數據保存在data屬性中 --}}
            {{!-- #data相當于this --}}
            {{:#parent.parent.data.name}}的{{:#data}}
          {{/for}}
        </td>
      </tr>
    </script>
   
    <script>
      //數據源
      var dataSrouce = [{
        name: "張三",
        family: [
          "爸爸",
          "媽媽",
          "哥哥"
        ]
      },{
        name: "李四",
        family: [
          "爺爺",
          "奶奶",
          "叔叔"
        ]
      }];
     
      //渲染數據
      var html = $("#testTmpl").render(dataSrouce);
      $("#list").append(html);
     
    </script>
   
  </body>
</html>

嵌套循環使用參數訪問父級數據(推薦)

復制代碼 代碼如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>嵌套循環使用參數訪問父級數據 --- by 楊元</title>
    <style>
    </style>
   
  </head>
  <body>
   
    <div>
      <table>
        <thead>
          <tr>
            <th width="10%">序號</th>
            <th width="10%">姓名</th>
            <th width="80%">家庭成員</th>
          </tr>
        </thead>
        <tbody id="list">
         
        </tbody>
      </table>
    </div>
   
    <script src="jquery.min.js"></script>
    <script src="jsviews.js"></script>
   
    <!-- 定義JsRender模版 -->
    <script id="testTmpl" type="text/x-jsrender">
      <tr>
        <td>{{:#index + 1}}</td>
        <td>{{:name}}</td>
        <td>
          {{!-- 使用for循環時,可以在后邊添加參數,參數必須以~開頭,多個參數用空格分隔 --}}
          {{!-- 通過參數,我們緩存了父級的數據,在子循環中通過訪問參數,就可以間接訪問父級數據 --}}
          {{for family ~parentIndex=#index ~parentName=name}}
            <b>{{:~parentIndex + 1}}.{{:#index + 1}}</b>
            {{!-- #data相當于this --}}
            {{:~parentName}}的{{:#data}}
          {{/for}}
        </td>
      </tr>
    </script>
   
    <script>
      //數據源
      var dataSrouce = [{
        name: "張三",
        family: [
          "爸爸",
          "媽媽",
          "哥哥"
        ]
      },{
        name: "李四",
        family: [
          "爺爺",
          "奶奶",
          "叔叔"
        ]
      }];
     
      //渲染數據
      var html = $("#testTmpl").render(dataSrouce);
      $("#list").append(html);
     
    </script>
   
  </body>
</html>

自定義標簽(custom tag)中使用else(強烈不推薦)

復制代碼 代碼如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>自定義標簽中使用else --- by 楊元</title>
    <style>
    </style>
   
  </head>
  <body>
   
    <div>
      <table>
        <thead>
          <tr>
            <th width="50%">名稱</th>
            <th width="50%">單價</th>
          </tr>
        </thead>
        <tbody id="list">
         
        </tbody>
      </table>
    </div>
   
    <script src="jquery.min.js"></script>
    <script src="jsviews.js"></script>
   
    <!-- 定義JsRender模版 -->
    <script id="testTmpl" type="text/x-jsrender">
      <tr>
        <td>{{:name}}</td>
        <td>
          {{!-- isShow為自定義標簽,price是傳入的參數,status是附加屬性 --}}
          {{isShow price status=0}}
            {{:price}}
          {{else price status=1}}
            --
          {{/isShow}}
        </td>
      </tr>
    </script>
   
    <script>
      //數據源
      var dataSrouce = [{
        name: "蘋果",
        price: 108
      },{
        name: "鴨梨",
        price: 370
      },{
        name: "桃子",
        price: 99
      },{
        name: "菠蘿",
        price: 371
      },{
        name: "橘子",
        price: 153
      }];
     
      //自定義標簽
      $.views.tags({
        "isShow": function(price){
          var temp=price+''.split('');
         
          if(this.tagCtx.props.status === 0){
            //判斷價格是否為水仙花數,如果是,則顯示,否則不顯示
            if(price==(Math.pow(parseInt(temp[0],10),3)+Math.pow(parseInt(temp[1],10),3)+Math.pow(parseInt(temp[2],10),3))){
              return this.tagCtxs[0].render();
            }else{
              return this.tagCtxs[1].render();
            }
          }else{
            return "";
          }
         
        }
      });
     

      //渲染數據
      var html = $("#testTmpl").render(dataSrouce);
      $("#list").append(html);
     
    </script>
   
  </body>
</html>

用helper代替自定義標簽(推薦)

復制代碼 代碼如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>用helper代替自定義標簽 --- by 楊元</title>
    <style>
    </style>
   
  </head>
  <body>
   
    <div>
      <table>
        <thead>
          <tr>
            <th width="50%">名稱</th>
            <th width="50%">單價</th>
          </tr>
        </thead>
        <tbody id="list">
         
        </tbody>
      </table>
    </div>
   
    <script src="jquery.min.js"></script>
    <script src="jsviews.js"></script>
   
    <!-- 定義JsRender模版 -->
    <script id="testTmpl" type="text/x-jsrender">
      <tr>
        <td>{{:name}}</td>
        <td>
          {{!-- 利用原生的if做分支跳轉,利用helper做邏輯處理 --}}
          {{if ~isShow(price)}}
            {{:price}}
          {{else}}
            --
          {{/if}}
        </td>
      </tr>
    </script>
   
    <script>
      //數據源
      var dataSrouce = [{
        name: "蘋果",
        price: 108
      },{
        name: "鴨梨",
        price: 370
      },{
        name: "桃子",
        price: 99
      },{
        name: "菠蘿",
        price: 371
      },{
        name: "橘子",
        price: 153
      }];
     
      //Helper
      $.views.helpers({
        "isShow": function(price){
          var temp=price+''.split('');
          if(price==(Math.pow(parseInt(temp[0],10),3)+Math.pow(parseInt(temp[1],10),3)+Math.pow(parseInt(temp[2],10),3))){
            return true;
          }else{
            return false;
          }
        }
      });

      //渲染數據
      var html = $("#testTmpl").render(dataSrouce);
      $("#list").append(html);
     
    </script>
   
  </body>
</html>

完整實例代碼點擊此處本站下載。

希望本文所述對大家JsRender程序設計的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97精品视频在线播放| 欧美肥老太性生活视频| 国产精品678| 国产日韩精品在线播放| 亚洲第一网站免费视频| 欧美性猛交xxxx黑人猛交| 日韩在线观看免费| 精品国产欧美一区二区三区成人| 亚洲大尺度美女在线| 成人信息集中地欧美| 国产精品久久久久久久7电影| 2020欧美日韩在线视频| 精品久久久久久久久国产字幕| 中文字幕免费精品一区| 日韩大片在线观看视频| 亚洲女同精品视频| 亚洲国模精品一区| 秋霞成人午夜鲁丝一区二区三区| 精品久久久久久久久中文字幕| 久热精品视频在线| 97在线免费视频| 欧美体内谢she精2性欧美| 深夜福利亚洲导航| 国产精品久久久久久久久免费看| 精品久久久中文| 欧美激情中文字幕乱码免费| 久久久999精品免费| 欧美国产日韩一区二区| 久久国产色av| 性欧美亚洲xxxx乳在线观看| 国产成人精品免费久久久久| 色狠狠av一区二区三区香蕉蜜桃| 亚洲国产精品嫩草影院久久| 黄色一区二区在线| 亚洲影视中文字幕| 91精品国产91久久久久| 91精品久久久久久久久久久久久久| 亚洲天堂一区二区三区| 亚洲色图13p| 亚洲精品一区二三区不卡| 日韩美女视频中文字幕| 91av在线免费观看视频| 国产在线一区二区三区| 欧美老女人在线视频| 国产精品香蕉在线观看| 国产精品亚洲美女av网站| 久久免费视频网| 91成人在线播放| 在线观看视频亚洲| 中文字幕久精品免费视频| 亚洲社区在线观看| 91久久精品视频| 91久久夜色精品国产网站| 国产91精品视频在线观看| 欧美高清理论片| 久久成年人视频| 日韩成人免费视频| 国产欧美日韩中文字幕| 亚洲韩国日本中文字幕| 91黑丝在线观看| 一区二区成人精品| 国产噜噜噜噜噜久久久久久久久| 欧美日韩中文在线| 欧美专区国产专区| 久久久91精品国产| 亚洲最新av网址| 91国在线精品国内播放| 亚洲第一av网| 26uuu亚洲国产精品| 久久久久国产视频| 91精品免费久久久久久久久| 国产精品人人做人人爽| 国产精品福利片| 日韩高清电影好看的电视剧电影| www高清在线视频日韩欧美| 欧美激情第6页| 国产一区二区在线免费| 欧美—级a级欧美特级ar全黄| 欧美小视频在线观看| 国产一区二区动漫| 日韩在线中文视频| 成人妇女淫片aaaa视频| 欧美裸体xxxx极品少妇| 欧美尤物巨大精品爽| 亚洲va久久久噜噜噜久久天堂| 国产精品一区av| 国产精品久久久久久久久久99| 亚洲人成电影网站色www| 欧美激情精品久久久久久黑人| 亚洲国产三级网| 日韩一区二区三区国产| 日韩电影第一页| 欧美性xxxx极品高清hd直播| 免费av一区二区| 日韩视频免费在线| 日韩欧美在线第一页| 在线视频日本亚洲性| 亚洲精品www久久久| 国产成人精品在线视频| 国产视频精品久久久| 91丝袜美腿美女视频网站| 宅男66日本亚洲欧美视频| 91精品国产综合久久香蕉最新版| 国产精品久久久久久久9999| 久热精品视频在线观看| 国产999精品久久久影片官网| 欧美精品videossex性护士| 最近免费中文字幕视频2019| 97在线日本国产| 亚洲最新视频在线| 亚洲一级一级97网| 日韩精品免费在线视频观看| 日韩中文字幕视频在线观看| 精品中文视频在线| 国产日韩精品在线播放| 久久免费视频网站| 久久久久久国产精品久久| 国产精品18久久久久久首页狼| 成人a在线视频| 成人福利在线视频| 日韩精品中文字幕视频在线| 影音先锋欧美在线资源| 亚洲香蕉av在线一区二区三区| 国产精品美女www爽爽爽视频| 国产精品自产拍高潮在线观看| 成人午夜高潮视频| 91影院在线免费观看视频| 日韩精品视频在线观看网址| 欧美性videos高清精品| 国产欧美一区二区三区久久人妖| 日韩一区二区福利| 国产一区二区久久精品| 欧美日韩国产91| 国产精品一区二区av影院萌芽| 欧美高清videos高潮hd| 日韩av一区在线观看| 亚洲一区二区中文字幕| 国产精品视频99| 一本一道久久a久久精品逆3p| www.美女亚洲精品| 亚洲女人天堂色在线7777| 日韩的一区二区| 久久久亚洲影院| 中文字幕亚洲色图| 亚洲伊人久久大香线蕉av| 美女av一区二区| 清纯唯美日韩制服另类| 国产亚洲精品久久久久久| 亚洲国产精品专区久久| 久久伊人精品一区二区三区| 日韩免费电影在线观看| 欧美性极品少妇精品网站| 国产999精品| 欧美丰满少妇xxxxx| 午夜精品福利在线观看| 久久久久久美女| 一区二区在线视频| 久久精品国产一区| 亚洲欧美国产一区二区三区| 欧美老女人性视频| 国产亚洲精品综合一区91| 欧美在线一级va免费观看| 国产精品视频一区二区三区四| 亚洲男人的天堂网站|