學(xué)習(xí)過程:
1、語法介紹:
數(shù)據(jù)綁定:與angularjs類似,只不過視圖與模型是單向的綁定,模型改變,視圖改變,反過來則不行。
<script id="tpl1" type="text/template"> <h1>1、data mapping example</h1> <h2>{{message}}</h2> </script> //js中使用模板渲染 var data1 = {message:"hello,artTemplate is a javasript framework."}; $("node1").innerHTML = template("tpl1",data1);
條件判斷:這里支持單一的if,也可以加入else分支,沒有else if分支。
{{if isShow}} <h3>(2、滿足條件展示消息:{{message}}</h3> {{else}} <h3>(2x、條件不滿足,展示默認(rèn)消息</h3> {{/if}}
遍歷集合:
{{each list as item index}} <h3>the index of message is : {{index+1}} -> {{item}}</h3> {{/each}}
輔助函數(shù):可以用來將后端請求的數(shù)據(jù)進(jìn)行映射,比如1->正常,0->錯誤。在使用的時候僅需要在表達(dá)式后面通過"|func"的方式就可以,比如{{message | filterhandler}},其中filterhandler為自定義的輔助函數(shù)。
先定義一個輔助函數(shù),這里定義的是一個簡單的轉(zhuǎn)換日期格式函數(shù)。
template.helper("date2str",function(date){ var today = new Date(date); var year = today.getFullYear(); var month = today.getMonth()+1; if(month<10)month = "0"+month; var day = today.getDate(); if(day<10)day = "0"+day; return year+"-"+month+"-"+day; });
使用輔助函數(shù)
<p id="node4"></p> <script id="tpl4" type="text/template"> <h1>4、template.helper func example</h1> <h3>today is {{datenow | date2str}}</h3> </script> //js代碼中調(diào)用 var data4 = {datenow:new Date()}; $("node4").innerHTML = template("tpl4",data4);
預(yù)編譯:與使用模板不同的是,預(yù)編譯需要的是一個string類型的文檔片段,然后將數(shù)據(jù)交給預(yù)編譯后的模板進(jìn)行渲染。
var tpl5 = "<h1>5、compile example</h1><h3>this is a string the type is not {{type}}</h3>"; $("node5").innerHTML = template.compile(tpl5)({type:"text/template"});
引用子模板:
<p id="node6"></p> <script id="tpl6" type="text/template"> <h1>6、include child template example</h1> <p class="parenttemplate"> <h3>parent template</h3> {{include 'tpl6-child'}} </p> </script> <script id="tpl6-child" type="text/template"> <p class="childtemplate"> <h3>child template</h3> </p> </script>
2、下載template.js庫,引入到html文件中。<script type="text/javascript" src="template.js"></script>
3、這里給出一個綜合的例子,將前面介紹的一些語法練習(xí)一下:
<!doctype html> <html> <head> <meta charset="UTF-8"/> <title>artTemplate example</title> <style type="text/css"> *{margin:0;} h1,h2,h3{margin:3px;} h2,h3{text-indent:20px;} .parenttemplate{background:#ccc;width:600px;height:60px;} .childtemplate{background:lightblue;} </style> <script type="text/javascript" src="template.js"></script> <script> function $(id){return document.getElementById(id);} window.onload = function(){ //data mapping var data1 = {message:"hello,artTemplate is a javasript framework."}; $("node1").innerHTML = template("tpl1",data1); //if condition var data2 = {isShow:true,message:"hello,template"}; $("node2").innerHTML = template("tpl2",data2); data2.isShow = false; $("node2x").innerHTML = template("tpl2",data2); //list foreach var data3 = {list:["Javascript","JQuery","artTemplate"]}; $("node3").innerHTML = template("tpl3",data3); //helper function template.helper("date2str",function(date){ var today = new Date(date); var year = today.getFullYear(); var month = today.getMonth()+1; if(month<10)month = "0"+month; var day = today.getDate(); if(day<10)day = "0"+day; return year+"-"+month+"-"+day; }); var data4 = {datenow:new Date()}; $("node4").innerHTML = template("tpl4",data4); //compile example var tpl5 = "<h1>5、compile example</h1><h3>this is a string the type is not {{type}} </h3>"; $("node5").innerHTML = template.compile(tpl5)({type:"text/template"}); $("node6").innerHTML = template("tpl6",{}); //escape html $("node7").innerHTML = template("tpl7",{message:"<span>escape html tag</span>"}); } </script> </head> <body> <p id="node1"></p> <script id="tpl1" type="text/template"> <h1>1、data mapping example</h1> <h2>{{message}}</h2> </script> <p id="node2"></p> <p id="node2x"></p> <script id="tpl2" type="text/template"> <h1>2、if condition example</h1> {{if isShow}} <h3>(2、滿足條件展示消息:{{message}}</h3> {{else}} <h3>(2x、條件不滿足,展示默認(rèn)消息</h3> {{/if}} </script> <p id="node3"></p> <script id="tpl3" type="text/template"> <h1>3、list example</h1> {{each list as item index}} <h3>the index of message is : {{index+1}} -> {{item}}</h3> {{/each}} </script> <p id="node4"></p> <script id="tpl4" type="text/template"> <h1>4、template.helper func example</h1> <h3>today is {{datenow | date2str}}</h3> </script> <p id="node5"></p> <p id="node6"></p> <script id="tpl6" type="text/template"> <h1>6、include child template example</h1> <p class="parenttemplate"> <h3>parent template</h3> {{include 'tpl6-child'}} </p> </script> <script id="tpl6-child" type="text/template"> <p class="childtemplate"> <h3>child template</h3> </p> </script> <p id="node7"></p> <script id="tpl7" type="text/template"> <h1>7、escape html tag example</h1> <h3>origin expression : {{#message}}</h3> <h3>after escape ==> : {{message}}</h3> </script> </body> </html>
運行這個示例,可以得到如下的效果:
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com