新公司项目,同事推荐了我JsRender 模板插件,用了感受挺好用的,至少比拼接字符串方便的多,并且支持绑定和函数判断,以及一些其余的高级用法,我用到的有,数据绑定,if else 判断,和方法绑定等。废话很少说,开始介绍。(并不是jsRender学习,只是我的项目总结)javascript
先看一段代码:html
<script type="text/x-jsrender" id="letterSendUserInfoTemplate"> <img class="header" src="{{:headPhotos}}" onerror="javascript:this.src=''" /> <div class="info_warp"> <div class="info_inner"> <span class="username">{{:name}}</span> <span class="userinfo">{{:title1String}}</span> <span class="userinfo">{{:title2String}}</span> </div> <p class="micro_text"> {{:microMotto}} </p> </div> </script>
没错,以上就是模板了,{{}}里的就是要绑定的Model数据。首页,页面上引用jsrender.js很少说,若是绑定上述模板的的话,方法以下:java
var tabhtml = $("#letterSendUserInfoTemplate").render(data); letter.options.leftlettertabcontainer.html(tabhtml); var data=[{headPhotos:'',name:'',title1String:'',title2String:'',microMotto:''}, {headPhotos:'',name:'',title1String:'',title2String:'',microMotto:''}];
其实很简单,若是是ajax请求的话,只要把返回的数据项绑定到相应的html上,而后用模板的render方法获得相应的html,赋值给相应的div或者其余元素,就OK了, 省去了本身拼写html而且难维护的麻烦。ajax
使用功能一: for循环ide
{{for #data}}html代码{{/for}}
使用功能二:if else 根据不一样的条件判断给元素赋值不一样的class
函数
class="{{if placeMent==0}}other `else`self{{/if}} {{if isRead}}`else`notRead{{/if}} clearfix"
使用功能三:用js方法,将时间转换为固定格式,注意ShortTimeFormatter方法必须放在$.views.helpers里面
学习
$.views.helpers({ TimeFormatter: function (time) { var t = time.split('T'); var result = t[0].substr(0, 10) + ' ' + t[1].substr(0, 5); return result; }, ShortTimeFormatter: function (time) { var t = time.split('T'); var result = t[0].substr(2, 8) + ' ' + t[1].substr(0, 5); return result; }, LastTimeFormatter: function (time) { return $.getDateDiff(time); } });
<div class="release_time"> {{>~ShortTimeFormatter(addTime)}} </div>
好啦,项目中目前就用到这么几个简单的方法,不过jsrender应该会更强大一些,只不过我没有用到,对此感兴趣的能够上网艘一下吧,没错, JsRender
this