一:组件案例发表评论
HTML代码如下:
<body> <div id="app"> <com1 @func="loadComments"></com1> <ul class="list-group"> <li class="list-group-item" v-for="item in list" :key="item.id"> <span class="badge">评论人:{{item.user}}</span> {{item.content}} </li> </ul> </div> <template id="box"> <div> <div class="form-group"> <label>评论人:<input type="text" class="form-control" v-model="user"></label> </div> <div class="form-group"> <label>评论内容:<textarea class="form-control" v-model="content"></textarea></label> </div> <div class="form-group"> <input type="button" value="评论" class="btn btn-primary" @click="postComment"></input> </div> </div> </template> </body>
vue代码如下:
<script> var commentBox = { template: '#box', data() { return { user: '', content: '', } }, methods: { postComment() {//发表评论的按钮 // 获取评论数据 var comment = { id: Date.now(), user: this.user, content: this.content } // 从localStorage中获取评论 var list = JSON.parse(localStorage.getItem('cmts') || '[]'); list.unshift(comment); // 重新保存最新的评论数据, localStorage.setItem('cmts', JSON.stringify(list)); // 点击评论之后,清空数据 this.user = this.content = ''; //点击评论的时候就,子组件调用父组件的方法来刷新 this.$emit('func'); } }, } new Vue({ el: '#app', data: { list: [ { id: Date.now(), user: '李四1', content: '天生我才必有用1' }, { id: Date.now(), user: '李四2', content: '天生我才必有用2' }, { id: Date.now(), user: '李四3', content: '天生我才必有用3' }, ] }, created() { this.loadComments(); }, methods: { loadComments(){ // 从localStorage中获取评论,刷新页面 var list = JSON.parse(localStorage.getItem('cmts') || '[]'); this.list=list; } }, components: { com1: commentBox } });