评论列表练习(前端保存,刷新页面后仍存在)

评论列表练习

效果图

image
image
image

代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>评论列表</title>
		<script src="../js/vue-2.4.0.js"></script>
		<link rel="stylesheet" type="text/css" href="../bootstrap-3.3.7-dist/css/bootstrap.css"/>
	</head>
	<body>
		<div id="app">
			<!--如果组件命名时,使用了驼峰命名法,则引用组件时要使用中划线-->
			<com-msg @func="getContent"></com-msg>
			<ul class="list-group">
		      	<li class="list-group-item" v-for="item in list" :key="item.id">
		        <span class="badge">评论人: {{ item.name }}</span>
		        {{ item.content }}
		      </li>
    		</ul>
		</div>
		
		<template id="temp">
			<div>
		      <div class="form-group">
		        <label>评论人:</label>
		        <input type="text" class="form-control" v-model="name">
		      </div>
		
		      <div class="form-group">
		        <label>评论内容:</label>
		        <textarea class="form-control" v-model="content"></textarea>
		      </div>
		
		      <div class="form-group">
		        <input type="button" value="发表评论" class="btn btn-primary" @click="postContent">
		      </div>
		
		    </div>
		</template>
		
		<script type="text/javascript">
			let vm = new Vue({
				el: "#app",
				data: {
					list: [
			          
        			]
				},
				created() {
					//调用方法
					this.getContent();
				},
				methods: {
					getContent() {
						//获取localStorage中的数组
						let conList = JSON.parse(localStorage.getItem("msg") || "[]"); 
						this.list = conList;
					}
				},
				components: {
					comMsg: {
						template: "#temp",
						data() {
							return {
								name: "",
								content: ""
							}
						},
						methods: {
							postContent() {
								//1. 用接收表单的值构造对象
								let obj = {id: Date.now(),name:this.name,content:this.content}
								//2. 从localstorage中获得对象数组。但是,localstorage中只能存储字符串。JSON.parse()
								let list = JSON.parse(localStorage.getItem("msg") || "[]"); 
								//3. 把对象添加到本地存储localStorage中的数组里
								list.unshift(obj);
								//4. 把对象数组保存到localstorage中。JSON.stringify()
								localStorage.setItem("msg", JSON.stringify(list));
								this.name = this.content = '';
								
								//5. 调用getContent刷新列表
								this.$emit("func");
							}
						}
					}
					
				}
			});
		</script>
	</body>
</html>

posted @ 2021-07-31 16:02  九尾。  阅读(100)  评论(0编辑  收藏  举报