jsrender demo

1、内置的模板标签,{{:x}}解析html与{{>x}}不解析html区别

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="../js/jquery-2.1.4.js"></script>
    <script src="../js/jsrender.js"></script>
</head>
<body>
    <div>
        <table style="border: 1px solid #000;">
            <thead>
            <tr>
                <td>姓名</td>
                <td>年龄</td>
                <td>性别</td>
            </tr>
            </thead>
            <tbody id="information"></tbody>
        </table>
    </div>
<script id="dataTemplat" type="text/x-jsrender">
     <tr>
    <td>{{:name}}</td>
    <td>{{:age}}</td>
    <td>
       <!--{{:x}}解析html-->
      {{:agent}}</br>
      <!--{{>x}}不解析html-->
      {{>agent}}
    </td>
  </tr>
</script>
<script>
    var data = {"name":"luyao", "age":"22","agent":"<b>F</b>"};
    var html = $("#dataTemplat").render(data);
    $("#information").html(html);
</script>
</body>
</html>

输出结果

133908_A07w_2264370.jpg

2、{{for}}循环使用

使用for循环时,可以在后边添加参数,参数必须以~开头,多个参数用空格分隔。

通过参数,我们缓存了父级的数据,在子循环中通过访问参数,就可以间接访问父级数据。

#data相当于this,如果在父级使用表示父级的this,如果在子级使用表示子级的this数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="../../js/jquery-2.1.4.min.js"></script>
    <script src="../../js/jsviews.js"></script>

</head>
<body>
<div>
    <table>
        <thead>
        <tr>
            <th width="10%">序号</th>
            <th width="20%">姓名</th>
            <th width="70%">家庭成员</th>
        </tr>
        </thead>
        <tbody id="list">

        </tbody>
    </table>
</div>

<!-- 定义jsrender模板-->
<script id="testTmpl" type="text/x-jsrender">
      <tr>
        <td>{{:#index + 1}}</td>
        <td>{{:name}}.{{:#data.name}}</td>
        <td>
            {{for family ~parentIndex=#index ~parentName=name}}
            <b>{{:~parentIndex}}.{{:#index}}</b>
            {{:~parentName}}的{{:#data}}
            {{/for}}
        </td>
      </tr>
</script>
<script>
 //数据源
 var dataSrouce = [{
        name: "张三",
 family: [
            "爸爸",
 "妈妈",
 "哥哥"
 ]
    },{
        name: "李四",
 family: [
            "爷爷",
 "奶奶",
 "叔叔"
 ]
    }];

 //渲染数据
 var html = $("#testTmpl").render(dataSrouce);
 $("#list").append(html);

</script>


</body>
</html>

输出结果

232924_0iYf_2264370.png


3、{{if }} 判断使用

用于渲染数据表达式为true或非空时

{{if expr }}...{{/if}} 用于渲染满足条件的内容。

{{if ...}}...{{else}}...{{/if}}

{{if expr }}{{else expr }}{{/if}}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="../../js/jquery-2.1.4.min.js"></script>
    <script src="../../js/jsviews.js"></script>

</head>
<body>
<div>
    <table>
        <thead>
        <tr>
            <th width="10%">序号</th>
            <th width="20%">姓名</th>
            <th width="70%">家庭成员</th>
        </tr>
        </thead>
        <tbody id="list">

        </tbody>
    </table>
</div>

<!-- 定义jsrender模板-->
<script id="testTmpl" type="text/x-jsrender">
{{if name =='张三'}}
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
{{else name =='李四'}}
      <tr>
        <td>{{:#getIndex() + 1}}</td>
        <td>{{:name}}.{{:#data.name}}</td>
        <td>
            {{for family ~parentIndex=#getIndex() ~parentName=name}}
            <b>{{:~parentIndex}}.{{:#getIndex()}}</b>
            {{:~parentName}}的{{:#data}}
            {{/for}}
        </td>
      </tr>
 {{/if}}
</script>
<script>
 //数据源
 var dataSrouce = [{
        name: "张三",
 family: [
            "爸爸",
 "妈妈",
 "哥哥"
 ]
    },{
        name: "李四",
 family: [
            "爷爷",
 "奶奶",
 "叔叔"
 ]
    }];

 //渲染数据
 var html = $("#testTmpl").render(dataSrouce);
 $("#list").append(html);

</script>


</body>
</html>

输出结果:

235617_XAoY_2264370.png

错误问题:为什么用#index页面提示错误,建议用#getIndex()没问题。

235732_NIbL_2264370.png

4、自定义标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="../../js/jquery-2.1.4.min.js"></script>
    <script src="../../js/jsviews.js"></script>

</head>
<body>
<div>
    <table>
        <thead>
        <tr>
            <th width="10%">序号</th>
            <th width="20%">姓名</th>
            <th width="70%">家庭成员</th>
        </tr>
        </thead>
        <tbody id="list">

        </tbody>
    </table>
</div>

<!-- 定义jsrender模板-->
<script id="testTmpl" type="text/x-jsrender">
{{if ~isName(name)}}
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
{{else name =='李四'}}
      <tr>
        <td>{{:#getIndex() + 1}}</td>
        <td>{{:name}}.{{:#data.name}}</td>
        <td>
            {{for family ~parentIndex=#getIndex() ~parentName=name}}
            <b>{{:~parentIndex}}.{{:#getIndex()}}</b>
            {{:~parentName}}的{{:#data}}
            {{/for}}
        </td>
      </tr>
 {{/if}}
</script>
<script>
 //数据源
 var dataSrouce = [{
        name: "张三",
 family: [
            "爸爸",
 "妈妈",
 "哥哥"
 ]
    },{
        name: "李四",
 family: [
            "爷爷",
 "奶奶",
 "叔叔"
 ]
    }];

 $.views.helpers({
        "isName":function(name){
            if(name == "张三"){
                return true;
 }else{
                return false;
 }

        }
    });

 //渲染数据
 var html = $("#testTmpl").render(dataSrouce);
 $("#list").append(html);

</script>


</body>
</html>


输出结果:

001332_O1f3_2264370.png

转载于:https://my.oschina.net/luyaolove/blog/489822

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值