1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>Document</title> 9 <!--1.导入Vue的包--> 10 <script src=" https://cdn.jsdelivr.net/npm/vue"></script> 11 <link rel="stylesheet" href="../lib/bootstrap.css"> 12 </head> 13 14 <body> 15 <div id="app"> 16 <cmt-box @func="loadComments"></cmt-box> 17 18 <ul class="list-group"> 19 <li class="list-group-item" v-for="item in list" :key="item.id"> 20 <span class="badge">评论人:{{item.user}}</span> 21 {{item.content}} 22 </li> 23 </ul> 24 25 </div> 26 27 <template id="tmp1"> 28 <div> 29 <div class="form-group"> 30 <label>评论人:</label> 31 <input type="text" class="form-control" v-model="user"> 32 </div> 33 34 <div class="form-group"> 35 <label>评论内容:</label> 36 <textarea class="form-control" v-model="content"></textarea> 37 </div> 38 39 <div class="form-group"> 40 <input type="button" value="发表评论" class="btn btn-primary" @click="postComment"> 41 </div> 42 43 44 </div> 45 </template> 46 47 <script> 48 49 var commentBox={ 50 data(){ 51 return{ 52 user:'', 53 content:'' 54 } 55 }, 56 template:'#tmp1', 57 methods:{ 58 postComment(){//发表评论的方法 59 //分析:发表评论的业务逻辑 60 //1.评论数据存到哪里去???存放到了localStorage中 评论数据存到哪里去???存放到了localStorage中.setItem('cmts','') 61 //2.先组织出一个最新的评论数据对象 62 //3.想办法,把第二步中,得到的评论对象,保存到localStorage中; 63 //3.1 localStorage只支持存放字符串数据,要先调用JSON.stringify 64 //3.2 在保存 最新的评论数据之前,要先从localStorage获取到之前的评论数据(string),转换为一个数组对象,然后,把最新的评论,push到这个数组 65 //3.3 如果获取到的 localStorage 中的 评论字符串,为空不存在,则可以返回一个'[]' 让JSON.parse去转换 66 //3.4 把 最新的 评论列表数组,再次调用JSON.tringify转为 数组字符串,然后调用 localStorage.setItem() 67 var comment = {id:Date.now(),user:this.user,content:this.content} 68 //从localStorage中获取所有的评论 69 var list =JSON.parse(localStorage.getItem('cmts')||'[]') 70 list.unshift(comment) 71 //重新保存最新的评论数据 72 localStorage.setItem('cmts',JSON.stringify(list)) 73 this.user=this.content='' 74 this.$emit('func') 75 76 } 77 } 78 } 79 //创建 Vue 实例,得到 ViewModel 80 var vm = new Vue({ 81 el:'#app', 82 data:{ 83 list:[ 84 {id:Date.now(), user:'李白',content:'天生我材必有用' }, 85 {id:Date.now(), user:'江小白',content:'劝君更尽一杯酒' }, 86 {id:Date.now(), user:'李白',content:'我姓马,风吹草低见牛羊的马' } 87 ] 88 }, 89 beforeCreate(){//注意:这里不能调用 loadComments 方法,因为在执行这个钩子函数的时候,data和methods都还没有被初始化好 90 91 }, 92 created(){ 93 this.loadComments() 94 }, 95 methods:{ 96 loadComments(){//从本地的localStorage 中,加载评论列表 97 var list =JSON.parse(localStorage.getItem('cmts')||'[]') 98 this.list=list 99 } 100 }, 101 components:{ 102 'cmt-box':commentBox 103 } 104 }); 105 </script> 106 </body> 107 </html>