@buluoXu
2015-04-18T08:35:54.000000Z
字数 4462
阅读 1771
整理: @1棵拼搏的寂静草
模板引擎 vuejs 腾讯artTemplate
<div id="demo"><p>{{message}}</p><!-- v-model指令只能用在<input>, <select> 或 <textarea> 元素上 --><input v-model="message"></div>
var demo = new Vue({el: '#demo',//div的iddata: {message: 'Hello Vue.js!'//json对象数据}})
demo1.bmp
<ul><li v-repeat="user">序号{{$index}} : {{name}} -- {{email}}</li></ul>
new Vue({el: '#demo',data: {user: [{name:'demo',email:'1@ly.com'},{name:'demo1',email:'11@ly.com'},{name:'demo2',email:'12@ly.com'},{name:'demo3',email:'13@ly.com'}]}})
<div id="demo"><a v-on="click: onClick">Trigger a handler</a><a v-on="click: n++">Trigger an expression</a></div>
new Vue({el: '#demo',data: {n: 0},methods: {//所有自定义方法都写在methods里面onClick: function (e) {console.log(e.target.tagName) // "A"console.log(e.targetVM === this) // true}}})
<ul><li v-repeat="user">序号{{$index}} : {{name}} -- {{email}}<p v-html="color"></p>//不转义<p>{{color}}</p>//转义</li></ul>
new Vue({el: '#demo',data: {user: [{name:'demo',email:'1@ly.com',color:'<span>我是带标签的文字1</span>'},{name:'demo1',email:'11@ly.com',color:'<span>我是带标签的文字2</span>'},{name:'demo2',email:'12@ly.com',color:'<span>我是带标签的文字3</span>'},{name:'demo3',email:'13@ly.com',color:'<span>我是带标签的文字4</span>'}]}})
<div id="demo"><ul><li v-repeat="method">{{Name}} -- {{r2Br(OutputMessage)}} -- {{formatValue(Result)}}</li></ul></div>
new Vue({//模板引擎渲染el: "#demo",data: {'method': [{'Id': '2','TestResultId': '22','Name': '喵星人','Result': 1,'OutputMessage': '我出错啦!!!!\r\n哈哈哈哈哈哈'},{'Id': '3','TestResultId': '33','Name': '汪星人','Result': 0,'OutputMessage': '地方大幅度\r\n姐姐姐姐姐姐姐姐姐姐姐姐姐姐姐姐姐姐\r\n'}]},//ajax返回的json数据集methods: {formatValue: function (val) {str = "";switch (val) {case 0:str = '<label class="label label-danger xx-label">失败</label>';break;case 1:str = '<label class="label label-success xx-label">成功</label>';break;case 2:str = '<label class="label label-warning xx-label">跳过</label>';break;default:break;}return str;},r2Br: function (val) {return val.replace(/[\r\n]/g, "<br/>");}}});
实时刷新数据,最后无奈之下,请教了vuejs的作者@尤小右 和vuejs文档翻译@勾三股四 ,非常感谢二位前辈给予的帮助,以后我会仔细的阅读vue的api的。下面的代码是@尤小右提供的demo:
var vm = new Vue({el: '#demo',data:{message: '测试'+ new Date().getTime()}});setInterval(function () {//实时更新数据的关键vm.message = '测试'+ new Date().getTime()}, 1000);//根据api,里面有一个vm.$data的方法setInterval(function () {//实时更新数据的关键vm.$data={message: '测试'+ new Date().getTime()};//vm.message = '测试'+ new Date().getTime();}, 1000);
<script id="test" type="text/html"><h1>{{title}}</h1><ul>{{each list as value i}}<li>索引 {{i + 1}} :{{value}}</li>{{/each}}</ul></script>
var data = {title: '标签',list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']};var html = template('test', data);document.getElementById('content').innerHTML = html;
<script id="test" type="text/html"><ul>{{each list as value i}}<li>索引 {{i + 1}} :{{value}}</li>{{/each}}</ul></script>
var data = {list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']};var html = template('test', data);document.getElementById('content').innerHTML = html;
<script id="test" type="text/html">数据格式化:<p class="xxlb"> {{#value.OutputMessage | r2Br}}不转义,只要加上'#'号,就可以将字符串转换成html标签{{value.OutputMessage | r2Br}}转义,字符串原样输出</p>数值替换:<p class="xxlb"> {{#value.Result | formatValue}}</p>带参数方法:{{time | dateFormat:'yyyy年 MM月 dd日 hh:mm:ss'}}</script>
template.helper('formatDate', function (val) {return new Date(parseInt(val.replace("/Date(", "").replace("000)/", "")) * 1000).toLocaleString();});template.helper('r2Br', function (val) {return val.replace(/[\r\n]/g, "<br/>");});template.helper('formatValue', function (val) {var html = "";switch (val) {case 0:html = '<label class="label label-danger xx-label">失败</label>';break;case 1:html = '<label class="label label-success xx-label">成功</label>';break;case 2:html = '<label class="label label-warning xx-label">跳过</label>';break;default:break;}return html;});template.helper('dateFormat', function (date, format) {date = new Date(date);var map = {"M": date.getMonth() + 1, //月份"d": date.getDate(), //日"h": date.getHours(), //小时"m": date.getMinutes(), //分"s": date.getSeconds(), //秒"q": Math.floor((date.getMonth() + 3) / 3), //季度"S": date.getMilliseconds() //毫秒};format = format.replace(/([yMdhmsqS])+/g, function(all, t){var v = map[t];if(v !== undefined){if(all.length > 1){v = '0' + v;v = v.substr(v.length-2);}return v;}else if(t === 'y'){return (date.getFullYear() + '').substr(4 - all.length);}return all;});return format;});
这里只是展示了常用的功能,若要使用高级功能,请查看各个引擎的官方文档。