doT js模板入门 2
doT js 使用{{}} 非常相似于JSP,所以用起来感觉非常亲切,非常顺手
{{–><%
}}–>%>
比如:
<div id="evaluationtmpl">
{{ for(var prop in it) { }}
<div>KEY:{{= prop }}---VALUE:{{= it[prop] }}</div>
{{ } }}
</div>
是不是非常像:
<div id="evaluationtmpl">
<% for(var prop in it) { %>
<div>KEY:{{= prop }}---VALUE:{{= it[prop] }}</div>
<% } %>
</div>
以下是一个二重循环的实例:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>客户列表</title>
<link href="css/dealer.css" rel="stylesheet" type="text/css">
<link href="css/tcal.css" rel="stylesheet" type="text/css">
<script src="js/tcal.js" type="text/javascript"></script>
<script id="cuslist" type="text/x-dot-template">
<table border="1" >
{{ for(var prop in it){ }}
{{? typeof it[prop]['appName']=='object' }}
<tr >
<td rowspan="{{=it[prop]['appName'].length}}" >{{=it[prop]['cusName']}}</td>
<td>{{=it[prop]['appName'][0]}}</td>
<td>{{=it[prop]['appTime'][0]}}</td>
</tr>
{{ for(var prop2=1;prop2 <it[prop]['appName'].length; prop2++ ){ }}
<tr>
<td >{{=it[prop]['appName'][prop2]}}</td>
<td >{{=it[prop]['appTime'][prop2]}}</td>
</tr>
{{ } }}
{{?? }}
<tr>
<td >{{=it[prop]['cusName']}}</td>
<td >{{=it[prop]['appName']}}</td>
<td >{{=it[prop]['appTime']}}</td>
</tr>
{{?}}
{{ } }}
</tableb>
</script>
<script type="text/javascript" src="js/doT.min.js"></script>
</head>
<body>
<div id="table-list">
</div>
</body>
<script type="text/javascript">
var cusDate=[
{"cusName":"天X信息技术有限公司","appName":["好管家","朋友圈"],"appTime":["2015-07-12","2015-07-12"],"appPeop":["张三","李连清"]},
{"cusName":"天X信息公司","appName":["好管家","朋友圈"],"appTime":["2015-07-12","2015-07-23"],"appPeop":["张三","李连清"]},
{"cusName":"天X信息技公司","appName":"好管家","appTime":"2015-07-12","appPeop":"张青"},
{"cusName":"天X公司","appName":"好管家,a+","appTime":"2015-07-12","appPeop":"张青"},
];
//tmpljson={"testmode":"<td class='tab-com'>{{=trValue.cusName}}</td><td class='tab-other'>{{=trValue.appName}}</td><td class='tab-other'>{{=trValue.appTime}}</td><td class='tab-name'>aaa{{=trValue.appPeop}}</td>"}
// console.log(document.getElementById("cuslist").innerHTML);
console.log('----------------------');
var cusHtml=doT.template(document.getElementById("cuslist").innerHTML);
document.getElementById('table-list').innerHTML=cusHtml(cusDate);
/*document.getElementById('table-list').innerHTML= doT.template(cusHtml,undefined)(cusDate);*/
</script>
</html>
执行结果:
注意:
1,第二次循环的index是从1開始的,而不是从0開始;
2,doT JS的if推断有两种写法:
写法一:
<body>
<div id="conditionstmpl">
{{? !it.name }}
<div> 你还没有名字</div>
{{?? }}
<div>Oh, I love your name, {{=it.name}}!</div>
{{?
}}
</div>
<hr/>
<div id="condition"></div>
<script type="text/javascript">
var dataEncode = {"name": "黄威", "age": 31};
var interText = doT.template($("#conditionstmpl").html());
$("#condition").html(interText(dataEncode));
</script>
</body>
写法二:
<body>
<div id="conditionstmpl">
{{ if(!it.name){ }}
<div> 你还没有名字</div>
{{ } else { }}
<div>Oh, I love your name, {{=it.name}}!</div>
{{ } }}
</div>
<hr/>
<div id="condition"></div>
<script type="text/javascript">
var dataEncode = {"name": "", "age": 31};
var interText = doT.template($("#conditionstmpl").html());
$("#condition").html(interText(dataEncode));
</script>
</body>
參考:
doT js模板入门
doT js模板入门 2的更多相关文章
- doT js模板入门
doT.js github地址: doT.js 官方站点 实例1:简单 <!DOCTYPE html> <html lang="en"> <head& ...
- doT js模板入门 3
for 循环前推断循环的list是否为空 <script id="invoiceListDot" type="text/x-dot-template"&g ...
- doT.js模板引擎及基础原理
时至今日,基于后端JavaScript(Node.js)和MVC思想也开始流行起来.模板引擎是数据和页面分离工作中最重要的一环,在各大门户网站均有利用到模板引擎. 模板引擎有很多种,但是原理了解也是非 ...
- doT.js模板和pagination分页应用
doT.js模板和pagination分页应用 博客中模拟了数据加载初始化的过程.doT.js渲染每一项内容的数据项.示例如下: <script id="Messtmpl" ...
- doT js 模板引擎【初探】要优雅不要污
js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...
- doT.js 模板引擎的使用
dot.js是一个模板框架,在web前端使用. dot.js作为模板引擎, 主要的用途就是,在写好的模板上,放进数据,生成含有数据的html代码. 这是很简单的web前端模板框架, 简单说几个东西,你 ...
- doT.js模板用法
前提:引入doT.min.js: <script type="text/javascript" src="js/jquery.js"></sc ...
- dot.js模板实现分离式
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...
- 模板引擎doT.js介绍及如何判断对象为空、如何嵌套循环···
doT.js 灵感来源于搜寻基于 V8 和 Node.js ,强调性能,最快速最简洁的 JavaScript 模板函数 引入 javascript 文件: <script type=" ...
随机推荐
- View Controller Basics学习记录
1.UIView,UIScreen ,UIWindow的区别? UIScreen是关于设备的尺寸大小.UIWindow是在UIScreen上作画的区域.UIView是在uiwindow上draw视图. ...
- 【莫队算法】URAL - 2080 - Wallet
http://www.cnblogs.com/icode-girl/p/5783983.html 要注意卡片没有都被使用的情况. #include<cstdio> #include< ...
- [CF321C]Ciel the Commander
题目大意: 给你一棵n个结点的树,给每个结点分级,最高为'A',最低为'Z'. 尝试构造一种分级方案,使得任意两个相同级别的结点路径上至少有一个更高级的结点. 思路: 贪心+树上点分. 递归处理每一棵 ...
- C#Windows服务:一些方法(启动、停止等)
前面讲述了如何创建和安装服务(创建windows服务),下面把启动.停止.判断是否启动的方法也写一下. /// <summary> /// 判断是否安装了某个服务 /// </sum ...
- ubuntu使用ssh远程登录服务器及上传本地文件到服务器
1. ubuntu 远程登录 首先你的ubuntu要能够支持ssh,如果不能,自行百度! 打开终端,输入 ssh root@115.159.200.13(你的服务器的IP地址) 回车就会让你输入 ...
- 让你的saga更具有可伸缩性(Scaling NServiceBus Sagas)
https://lostechies.com/jimmybogard/2013/03/26/scaling-nservicebus-sagas/ 当我们使用NServiceBus sagas (pro ...
- 在WinRT程序中使用MEF
今天试了一下在WinRT中使用MEF,这里简单的介绍一下步骤. 首先,使用NuGet安装MEF 然后,就可以使用MEF组装插件了,简单的示例如下: interface ILogger { ...
- VMware虚拟机中为Linux 添加虚拟硬盘(VirtualBox方法类似)
修改1:2014-06-24 11:38:21 Linux添加硬盘是在原来安装的硬盘空间不够或者需要使用其他硬盘上的东西时候的解决办法,因为大多数初学者习惯使用虚拟机,这里以在Vmware虚拟机中实现 ...
- MPFIT for python
MPFIT本来用IDL语言写的,后面有人翻译成了C语言版本.再后面鉴于python语言的流行使用,又有人将其用Cython加了python接口,直接可以在python中调用,极大地方便了额们这些经常用 ...
- kvm : Permission denied
创建虚拟机类型为:“virt type :kvm” 时,会报如下错误: Could not access KVM kernel module: Permission denied failed to ...