vue實現(xiàn)評論列表
更新時間:2022年04月14日 17:03:43 作者:不爭亦不屑
這篇文章主要為大家詳細介紹了vue實現(xiàn)評論列表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了vue實現(xiàn)評論列表的具體代碼,供大家參考,具體內(nèi)容如下
案例數(shù)據(jù)使用localStorage持久性存儲 全局過濾器實現(xiàn)時間格式化
代碼部分
<!DOCTYPE html> <html lang="zh"> ?? ?<head> ?? ??? ?<meta charset="UTF-8"> ?? ??? ?<meta name="viewport" content="width=device-width, initial-scale=1.0"> ?? ??? ?<meta http-equiv="X-UA-Compatible" content="ie=edge"> ?? ??? ?<title></title> ?? ??? ?<script src="../lib/vue.js" type="text/javascript" charset="utf-8"></script> ?? ??? ?<link rel="stylesheet" type="text/css" href="../node_modules/bootstrap/dist/css/bootstrap.css" /> ?? ?</head> ?? ?<body> ?? ??? ?<div id="app"> ?? ??? ??? ?<div class="container"> ?? ??? ??? ??? ?<div class="row"> ?? ??? ??? ??? ??? ?<div class="col-md-6 offset-md-3"> ?? ??? ??? ??? ??? ??? ?<cmt-box @func="loadComments"></cmt-box> ?? ??? ??? ??? ??? ??? ?<ul class="list-group"> ?? ??? ??? ??? ??? ??? ??? ?<li class="list-group-item" v-for="item in list" :key="item.id"> ?? ??? ??? ??? ??? ??? ??? ??? ?<span class="badge badge-pill badge-dark float-right">評論人:{{item.user}}</span> ?? ??? ??? ??? ??? ??? ??? ??? ?<span class="float-right" style="position: relative;right: 60px;">{{ item.ctime | dateFormat() }}</span> ?? ??? ??? ??? ??? ??? ??? ??? ?{{item.content}} ?? ??? ??? ??? ??? ??? ??? ?</li> ?? ??? ??? ??? ??? ??? ?</ul> ?? ??? ??? ??? ??? ?</div> ?? ??? ??? ??? ?</div> ?? ??? ??? ?</div> ?? ??? ?</div> ?? ??? ?<template id="tmpl"> ?? ??? ??? ? ?? ??? ??? ?<div> ?? ??? ??? ??? ?<div class="form-group"> ?? ??? ??? ??? ??? ?<label for="comment">評論人:</label> ?? ??? ??? ??? ??? ?<input type="text" id="comment" class="form-control" v-model="user" /> ?? ??? ??? ??? ?</div> ?? ??? ??? ??? ? ?? ??? ??? ??? ?<div class="form-group"> ?? ??? ??? ??? ??? ?<label for="commentText">評論內(nèi)容:</label> ?? ??? ??? ??? ??? ?<textarea id="commentText" class="form-control" v-model="content"> ?? ??? ??? ??? ? ?? ??? ??? ??? ??? ?</textarea> ?? ??? ??? ??? ?</div> ?? ??? ??? ??? ? ?? ??? ??? ??? ?<div class="form-group"> ?? ??? ??? ??? ??? ?<input type="button" value="發(fā)表評論" class="btn btn-primary" @click="postComment" /> ?? ??? ??? ??? ?</div> ?? ??? ??? ?</div> ?? ??? ??? ? ?? ??? ?</template> ?? ??? ?<script type="text/javascript"> ?? ??? ??? ? ?? ??? ??? ?// 全局過濾器 時間格式化 ?? ??? ??? ?// 所謂的全局過濾器,就是所有的VM實例都共享的 ?? ??? ??? ?Vue.filter('dateFormat',function(dateStr,pattern=""){ ?? ??? ??? ??? ? // 根據(jù)給定的時間字符串,得到特定的時間 ?? ??? ??? ??? ?? ?? ??? ??? ??? ?var dt = new Date(dateStr) ?? ??? ??? ??? ? ?? ??? ??? ??? ?// ? yyyy-mm-dd ?? ??? ??? ??? ?var year = dt.getFullYear() ?? ??? ??? ??? ? ?? ??? ??? ??? ?var month = (dt.getMonth() + 1).toString().padStart(2,'0') ?? ??? ??? ??? ? ?? ??? ??? ??? ?var day = dt.getDate().toString().padStart(2,'0') ?? ??? ??? ??? ? ?? ??? ??? ??? ?// return `${year}-${month}-${day}` ?? ??? ??? ??? ? ?? ??? ??? ??? ?if(pattern && pattern.toLowerCase() === 'yyyy-mm-dd'){ ?? ??? ??? ??? ??? ?return `${year}-${month}-${day}` ?? ??? ??? ??? ?}else{ ?? ??? ??? ??? ??? ?var hh = dt.getHours().toString().padStart(2,'0') ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ?var mm = dt.getMinutes().toString().padStart(2,'0') ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ?var ss = dt.getSeconds().toString().padStart(2,'0') ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ?return `${year}-${month}-${day} ${hh}:${mm}:${ss}` ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ? ?? ??? ??? ?}) ?? ??? ??? ? ?? ??? ??? ?var commentBox = { ?? ??? ??? ??? ?data() { ?? ??? ??? ??? ??? ?return { ?? ??? ??? ??? ??? ??? ?user: '', ?? ??? ??? ??? ??? ??? ?content: '', ?? ??? ??? ??? ??? ??? ?ctime:new Date() ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?}, ?? ??? ??? ??? ?template: '#tmpl', ?? ??? ??? ??? ?methods: { ?? ??? ??? ??? ??? ?postComment() { ?? ??? ??? ??? ??? ??? ?// ?localStorage 只支持存放字符串?dāng)?shù)據(jù), 要先調(diào)用 JSON.stringify? ?? ??? ??? ??? ??? ??? ?// ?在保存 最新的 評論數(shù)據(jù)之前,要先從 localStorage 獲取到之前的評論數(shù)據(jù)(string), 轉(zhuǎn)換為 一個 ?數(shù)組對象, 然后,把最新的評論, push 到這個數(shù)組 ?? ??? ??? ??? ??? ??? ?// ?如果獲取到的 localStorage 中的 評論字符串,為空不存在, 則 ?可以 返回一個 '[]' ?讓 JSON.parse 去轉(zhuǎn)換 ?? ??? ??? ??? ??? ??? ?// ?把 最新的 ?評論列表數(shù)組,再次調(diào)用 JSON.stringify 轉(zhuǎn)為 ?數(shù)組字符串,然后調(diào)用 localStorage.setItem() ?? ??? ??? ??? ??? ??? ?var comment = { ?? ??? ??? ??? ??? ??? ??? ?id: Date.now(), ?? ??? ??? ??? ??? ??? ??? ?user: this.user, ?? ??? ??? ??? ??? ??? ??? ?content: this.content, ?? ??? ??? ??? ??? ??? ??? ?ctime:this.ctime ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ??? ?// 從 localStorage 中獲取所有的評論 ?? ??? ??? ??? ??? ??? ?var list = JSON.parse(localStorage.getItem('cmts') || '[]') ?? ??? ??? ??? ??? ??? ?list.unshift(comment) ?? ??? ??? ??? ??? ??? ?// 重新保存最新的 評論數(shù)據(jù) ?? ??? ??? ??? ??? ??? ?localStorage.setItem('cmts', JSON.stringify(list)) ?? ??? ??? ??? ??? ??? ?this.user = this.content = '' ?? ??? ??? ??? ??? ??? ?this.$emit('func') ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?var vm = new Vue({ ?? ??? ??? ??? ?el: '#app', ?? ??? ??? ??? ?data: { ?? ??? ??? ??? ??? ?list: [] ?? ??? ??? ??? ?}, ?? ??? ??? ??? ?methods: { ?? ??? ??? ??? ??? ?loadComments() { ?? ??? ??? ??? ??? ??? ?// 從本地的 localStorage 中,加載評論列表 ?? ??? ??? ??? ??? ??? ?var list = JSON.parse(localStorage.getItem('cmts') || '[]') ?? ??? ??? ??? ??? ??? ?this.list = list ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?}, ?? ??? ??? ??? ?components: { ?? ??? ??? ??? ??? ?'cmt-box': commentBox ?? ??? ??? ??? ?}, ?? ??? ??? ??? ?created() { ?? ??? ??? ??? ??? ?this.loadComments() ?? ??? ??? ??? ?} ?? ??? ??? ?}) ?? ??? ?</script> ?? ?</body> </html>
效果圖
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3?封裝擴展并簡化Vuex在組件中的調(diào)用問題
這篇文章主要介紹了Vue3?封裝擴展并簡化Vuex在組件中的調(diào)用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01vue3.0 CLI - 2.1 - component 組件入門教程
這篇文章主要介紹了vue3.0 CLI - 2.1 - component 組件入門教程,本文主要的關(guān)注點就是組件,本文通過實例代碼相結(jié)合的形式給大家介紹的非常詳細,需要的朋友可以參考下2018-09-09Vue使用el-table實現(xiàn)自適應(yīng)列寬
這篇文章主要為大家詳細介紹了Vue使用el-table實現(xiàn)自適應(yīng)列寬,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01vue-print-nb解決vue打印問題,并且隱藏頁眉頁腳方式
這篇文章主要介紹了vue-print-nb解決vue打印問題,并且隱藏頁眉頁腳方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05