3.handlebars(if使用)

繼續學生清單handlebars演示,有時候學生數據會出現數據缺失的情況,不是每一個學生都有學生name這一項,我們這邊不想展示沒有name屬性的學生信息要怎么操作呢?這里我們用到handlebars中的if判斷!

一:引入1.引入jquery 2.引入handlebars

<!--引入jquery/handlebars-->
<script type="text/javascript" src="./js/jquery-3.0.0.min.js"></script>
<script type="text/javascript" src="./js/handlebars-v4.0.10.js"></script>

二:寫handlebars模板

注意:{{#if name}}可以用來判斷當前上下文中有沒有name屬性,它是嘗試去讀取name屬性,如果返回的為undefined、null、""、[]、false任意一個,都會導致最終結果為假。

 <tbody class="student-temp">
    <script type="text/x-handlebars-template" id="student-temp">
        {{#each student}}   
         {{#if name}}
        <tr>
            <td>aa</td>
            <td>bb</td>
            <td>cc</td>
            <td>dd</td>
        </tr>
         {{/if}}
        {{/each}}
    </script>
    </tbody>

三:handlebars的取值 {{變量名}}

 <tbody class="student-temp">
    <script type="text/x-handlebars-template" id="student-temp">
        {{#each student}}   
         {{#if name}}
        <tr>
            <td>{{name}}</td>
            <td>{{age}}</td>
            <td>{{gender}}</td>
            <td>{{fraction}}</td>
        </tr>
         {{/if}}
        {{/each}}
    </script>
    </tbody>

四:渲染數據

在這里注意看數據結構噢~ 第二組數據中沒有name屬性~

 <script>
    //    模擬數據
    var data = {
        "student": [
        {
            "name": "柳2",
            "age": '8',
            "gender": '女',
            "fraction": '89'
        },
        {
            "age": '9',
            "gender": '女',
            "fraction": '89'
        },
        {
            "name": "柳4",
            "age": '10',
            "gender": '女',
            "fraction": '89'
        }]
    };
    console.log(data);

    //    獲取到handlebars這個模板中的全部html內容
    var studentTemp = $('#student-temp').html();

    //    編譯
    var HanStudent = Handlebars.compile(studentTemp);

    //把編譯完成的代碼放入到 .student-temp 的這個容器中
    $('.student-temp').html(HanStudent(data))

</script>

完整demo代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>if-demo</title>
    <style>
        table, th, td {
            border: 1px solid red;
            text-align: center;
        }
    </style>
</head>
<body>
<table>
    <thead>
    <tr>
        <th>姓名</th>
        <th>年齡</th>
        <th>性別</th>
        <th>分數</th>
    </tr>
    </thead>
    <tbody class="student-temp">
    <script type="text/x-handlebars-template" id="student-temp">
        {{#each student}}
        {{#if name}}
        <tr>
            <td>{{name}}</td>
            <td>{{age}}</td>
            <td>{{gender}}</td>
            <td>{{fraction}}</td>
        </tr>
        {{/if}}
        {{/each}}
    </script>
    </tbody>

</table>
<script type="text/javascript" src="./js/jquery-3.0.0.min.js"></script>
<script type="text/javascript" src="./js/handlebars-v4.0.10.js"></script>
<script>
    //    模擬數據
    var data = {
        "student": [
        {
            "name": "柳2",
            "age": '8',
            "gender": '女',
            "fraction": '89'
        },
        {
            "age": '9',
            "gender": '女',
            "fraction": '89'
        },
        {
            "name": "柳4",
            "age": '10',
            "gender": '女',
            "fraction": '89'
        }]
    };
    console.log(data);

    //    獲取到handlebars這個模板中的全部html內容
    var studentTemp = $('#student-temp').html();

    //    編譯
    var HanStudent = Handlebars.compile(studentTemp);

    //把編譯完成的代碼放入到 .student-temp 的這個容器中
    $('.student-temp').html(HanStudent(data))


</script>
</body>
</html>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 請參看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon閱讀 7,190評論 2 19
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • <a name='html'>HTML</a> Doctype作用?標準模式與兼容模式各有什么區別? (1)、<...
    clark124閱讀 3,570評論 1 19
  • 嘀嘀嘀~啪。。。佩佩一掌把鬧鐘給按停了,迷迷糊糊地咕噥著,6點啊,要命啊,我上學趕圖的時候都沒起過這么早,穿衣洗漱...
    劉張震宇閱讀 265評論 4 2
  • 欲要春江壓明月,還從虛里看落花。 一江春水連天碧,一輪明月泣天白。 一江宛轉縈芳甸,花林月照雪飄霰。 歸人欲去承天...
    夏悠羽季閱讀 379評論 0 3