@buluoXu
2015-04-18T08:35:54.000000Z
字数 4462
阅读 1697
整理: @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的id
data: {
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;
});
这里只是展示了常用的功能,若要使用高级功能,请查看各个引擎的官方文档。