Vue实现简单留言板案例
<template>
<div>
<h2>留言板</h2>
<p>
昵称:
<input type="text" v-model="name">
</p>
<p>
留言内容:<br>
<textarea name="" id="" cols="30" rows="7" v-model="content"></textarea>
<span :class="{'text-color':!onSubmit}">{{userLength}}/{{maxLength}}</span>
</p>
<p>
<button @click="add">提交</button>
</p>
<hr>
<div>
<div v-for="(item,index) in list" style="border-bottom: 1px dashed;">
<p class="ly-p1">
<span>
{{item.name}}
{{item.time | TimeFilter}}
</span>
<span @click="praise(item)" class="praise">点赞:{{item.star}}</span>
</p>
<div>
{{item.content}}
</div>
<p>
<button @click="del(item,index)">删除</button>
</p>
</div>
</div>
</div>
</template>
<script>
export default{
data(){
return{
name:'',
content:'',
list:[],
userLength:0,
maxLength:30,
onSubmit:true
}
},
created() {
let liuyan = localStorage.liuyan
if(liuyan){
this.list = JSON.parse(liuyan)
}
},
watch:{
content(newVal,oldVal){
this.userLength = newVal.length
if(this.userLength>this.maxLength){
this.onSubmit = false
}else{
this.onSubmit = true
}
}
},
methods:{
add(){
if(this.name.trim()==''){
alert('请输入用户名')
return
}else if(this.content.trim()==''){
alert('请输入内容')
return
}
if(this.userLength>this.maxLength){
alert('你输入的字数已超过最大限制!')
return
}
this.list.push({
name:this.name,
content:this.content,
time:new Date().getTime(),
star:0
})
this.name = ''
this.content = ''
this.save()
},
del(item,index){
let rel = window.confirm(`确定要删除${item.name}的留言吗?`)
if(rel){
this.list.splice(index,1)
this.save()
}
},
praise(item){
item.star++
this.save()
},
save(){
localStorage.liuyan = JSON.stringify(this.list)
}
},
filters: {
TimeFilter(time) {
let oldDate = new Date(time)
let newDate = new Date()
var dayNum = "";
var getTime = (newDate.getTime() - oldDate.getTime()) / 1000;
if (getTime < 60 * 5) {
dayNum = "刚刚";
} else if (getTime >= 60 * 5 && getTime < 60 * 60) {
dayNum = parseInt(getTime / 60) + "分钟前";
} else if (getTime >= 3600 && getTime < 3600 * 24) {
dayNum = parseInt(getTime / 3600) + "小时前";
} else if (getTime >= 3600 * 24 && getTime < 3600 * 24 * 30) {
dayNum = parseInt(getTime / 3600 / 24) + "天前";
} else if (getTime >= 3600 * 24 * 30 && getTime < 3600 * 24 * 30 * 12) {
dayNum = parseInt(getTime / 3600 / 24 / 30) + "个月前";
} else if (time >= 3600 * 24 * 30 * 12) {
dayNum = parseInt(getTime / 3600 / 24 / 30 / 12) + "年前";
}
let year = oldDate.getFullYear();
let month = oldDate.getMonth() + 1;
let day = oldDate.getDate();
let hour = oldDate.getHours();
let minute = oldDate.getMinutes();
let second = oldDate.getSeconds();
return dayNum + " " + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
}
}
}
</script>
<style scoped="scoped">
.ly-p1{
display: flex;
justify-content: space-between;
}
.praise:hover{
color: red;
cursor: pointer;
}
.text-color{
color: red;
}
</style>
转载请注明原文地址:https://ipadbbs.8miu.com/read-11864.html