Template-Web基本概念

art-template模板渲染HTML
该方法的核心思想就是将json数据传入按照art-template模板编写模板中去。

1> 引入js文件

   	<script src="./js/template-web.js" type="text/javascript" charset="utf-8"></script>

2> 准备json对象

    例如: var obj1 = {teams:[]};
    要求:后台服务器fastjson帮助我们将需要展示的数据,转换成json字符串
          能够看到json数据

3> 制定模版

    <script id="模版的唯一标识"  type="text/html">
          在这个里面制定模板
    </script>
    
   <template id="模板的唯一标识">
          在这个里面制定模板
   </template>

4> 渲染

  <script type="text/javascript">
  	var showDiv = document.querySelector("#id选择器");
  	//template(模版的id,json格式的对象);
  	showDiv.innerHTML = template("模版的唯一标识", json对象名);
  </script>
  
  // 基于模板名渲染模板
  template(filename, data);
  filename: 对于模板的script标签的id;
  data: js获取的数据(一般是后端返回的序列化json字符串)

5> 常用语句

输出


    {{value}}             // 目前最常见的双花括号数据绑定
    {{data.key}}       // 对象点方式
    {{data['key']}}    // 另外一种对象处理方式
    {{a ? b : c}}       // 三元运算
    {{a || b}}           // 或运算  防止 undefined 报错
    {{a + b}}          // 并列输出
    {{$data['list']}} 

if 选择


{{if flag == '1'}}
     展示的内容
{{else if flag == "2"}}
     展示的内容
{{else}}
     展示的内容
{{/if}}

循环

 注意:
 target 支持 array 与 object 的迭代,其默认值为 $data。
 $value 与 $index 可以自定义:{{each target val key}}。
  -- stuArray 是json中属性名
  -- 没有设置别名的时候  {{$index}} 索引  {{$value}}获取数组中值
  -- stu是别名,可以修改
  -- index 数组的索引,从0开始
  {{each stuArray  stu index}}
       {{stu}} 
 	  {{stu.name}}
 	  {{index}}
  {{/each}}
  
  -- json属性的值,就是一个值,不是对象,也不是数组
  {{json的属性名}}

打印 print

   <script>
      var obj={ a: 'hello', b: '--world', c: '--!!!'};
   </script>

   <template id="mb1">
        {{print a b c}}
   </template>

转义问题

    <template id="mb">
    	显示文本:   {{userImg}}
    	<hr>
    	显示图片:    {{@userImg}}   或者   {{#userImg}} 
    </template>
    
    <script type="text/javascript">
    	 var obj={userImg:"<img src='./img/1.jpg'>"}
    	 document.querySelector(".show").innerHTML=template("mb",obj);
    </script>

模板中可以嵌入子模版


   //语法{{include '另外一个模版的id' 参数值}}
   <template id="template1">
   <ul class="artists">
   		 {{each artists  singer index}}
   		  <li>
   			 {{index+1}}
   			 <br>
   			 {{singer.name}}
   			 <br>
   			 {{include 'mb' singer}}
   		 </li>
         {{/each}}
   </ul>
  </template>
   <template id="mb">
   <!-- <img src="{{img1v1Url}}" width="80px"> -->
          {{id}}
   </template>

自定义过滤器

    // 定义变量
   template.defaults.imports.log = console.log;
   使用变量
   <% $imports.log('hello world') %>  == console.log('hello world')
   
   自定义过滤器定义函数
   template.defaults.imports.方法名 = function ( 参数 ) {
   
   }
   
   然后在模版中使用这个过滤器
   <span>{{json属性名 | 自定义过滤器方法名}}</span>
   <span>{{参数1|自定义过滤器方法名:参数2,参数3,... }}</div>

  <!DOCTYPE html>
  <html>
  	<head>
  		<meta charset="utf-8">
  		<title></title>
  	</head>
  	<body>
  		<div class="show">
  			
  		</div>
  		
  		<script src="./js/template-web.js" type="text/javascript" charset="utf-8"></script>
  		
  		<template id="k1">
  			  {{each sexList  sex}}
  			        {{sex|sexinfo}}  <br>
  			  {{/each}}
  		</template>
  		
  		<script type="text/javascript">
  			//自定义验证器在,js代码中写
  			template.defaults.imports.sexinfo=function(sex){
  				return sex==1?"男":"女";
  			}
  			
  			//定义一个json对象
  			var jsonObj={"sexList":[1,0,1,1,1,0]};
  			
  			//渲染模板
  			document.querySelector(".show").innerHTML=template("k1",jsonObj);
  			
  		</script>
  		
  	</body>
  </html>
  
  
  

定义变量

   {{set temp = data.sub.content}}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值