简单的js模板实现,不支持for循环和if判断哪些
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Simple Templating</title>
</head>
<body>
<div id="content" style="border:1px solid red;"></div>
<script type="template" id="template">
<h2>
<a href="{{href}}">
{{title}}
</a>
</h2>
<img src="{{imgSrc}}" alt="{{title}}">
</script>
<script type="text/javascript">
var data = [
{
title : 'php web appliaction',
href : 'http://www.baidu.com',
imgSrc : 'http://www.baidu.com'
},
{
title : 'js 权威指南',
href : 'http://www.qq.com',
imgSrc : 'http://www.qq.com'
}];
var template = document.querySelector('#template').innerHTML;
function _template(template, data){
var i = 0,
len = data.length,
fragment = '';
function replace(obj){
var t, key, reg;
for(key in obj){
reg = new RegExp('{{' + key + '}}', 'ig');
t = (t || template).replace(reg, obj[key]);
}
return t;
}
for(; i < len; i++){
fragment += replace(data[i]);
}
return fragment;
}
console.log(_template(template, data));
document.querySelector("#content").innerHTML=_template(template, data);
</script>
</body>
</html>
自己业务使用改进了下
/模板方法
function _temp(template, data){
var i = 0,
fragment = '';
function status(v){
var str =v ;
if(v==0){
str="审批不通过";
}else if(v==1){
str="审批中";
}else if(v==2){
str="放款成功";
}else if(v==3){
str="放款失败";
}else if(v==4){
str="支付成功";
}else if(v==5){
str="支付失败";
}else if(v==6){
str="已受理";
}
return str;
}
function replace(obj){
var t, key, reg,v;
for(key in obj){
reg = new RegExp('{{' + key + '}}', 'ig');
if(key=="STATUS"){
v=status(obj[key]);
}else if(key=='LOAN_DATE'){
v=new Date(obj[key]).format("yyyy-MM-dd hh:mm:ss");
}else if(key=='LOAN_EXPIRE'){
v=new Date(obj[key]).format("yyyy-MM-dd");
}else{
v=obj[key];
}
t = (t || template).replace(reg, v);
}
return t;
}
fragment += replace(data);
return fragment;
}
1487

被折叠的 条评论
为什么被折叠?



