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>
输出结果
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>
输出结果
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>
输出结果:
错误问题:为什么用#index页面提示错误,建议用#getIndex()没问题。
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>
输出结果: