• vue 组件评论 的同时进行刷新


    注意:
    1.最重要理解这里的父组件的刷新功能,通过v-on事件绑定委托给子组件执行,因为子组件的提交按钮和父组件的刷新评论的功能是分开的。

    2.没有数据时直接点击提交按钮时会出bug,并且关闭后重新加载页面还是会存在。因为localStorage在浏览器中是永久缓存的,通过localStorage清除缓存,如下 。最后的执行效果,会有演示,本来可以做出判断为空时,不给提交,这里为了说明这个问题

    window.onunload=function(){
            localStorage.clear();
    }

    HTML

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../lib/vue.js"></script>
        <link rel="stylesheet" href="../lib/bootstrap.css">
    </head>
    <body>
          <div id="app">
              
              <cmtbox v-on:flash="loadComment"></cmtbox>
              <!--将父组件的方法委托给子组件-->
     
              <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 }}
                      <!--badge:徽章-->
                  </li>
              </ul>
          </div>
     
          <template id="tmp">
              <div>
                  <div class="form-group">
                      <label>发表人:</label>
                      <input type="text" class="form-control" v-model="user">
                  </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="submit">
                  </div>
              </div>
          </template>
          
          <script>
     
              window.onunload=function(){
                  localStorage.clear();
              };
              //因为localStorage在浏览器中是永久缓存的,关闭后重新加载页面还是会存在先前的数据,特添加此项
              
              var commentBox = {
                template:'#tmp',
                //  通过id绑定后,直接将组件的内容在<template>定义,更加简单直观
                data(){
                    return {
                        user:'',
                        content:'',
                    }
                },
                methods:{
                    submit(){
                        var comment = { id:Date.now(), user:this.user,content:this.content};
                        //实例化一个新的数组对象
                        
                        var list = JSON.parse(localStorage.getItem('cmts') || '[]');
                        //从localStorage中获取数据
                        list.unshift(comment);
                        //添加在最上端
                        localStorage.setItem('cmts',JSON.stringify(list));
                        //加入更新的对象后,重新刷新localStorage数据
                        
                        this.user = this.content = '';
                        
                        this.$emit('flash');
                        //触发父组件委托的方法
                    }
                    //发表评论的方法
                }  
              };
              
              var vm = new Vue({
                 el:'#app',
                 data:{
                     list:[
                         { id:1,user:'陈小帅',content:'马克·吐恩说过:'},
                         { id:2,user:'陈xiao帅',content:'一个拿着棒槌的人'},
                         { id:3,user:'陈大帅',content:'看什么都像钉子'}
                     ]
                 },
                  components:{
                     'cmtbox':commentBox
                      //将组件命名    
                  },
                  methods:{
                     loadComment(){
                         var list = JSON.parse(localStorage.getItem('cmts') || '[]');  
                         this.list = list;
                     }
                  },
                      created(){
                         this.loadComment();
                      }
              });
          </script>
    </body>
    </html>

    转载   https://blog.csdn.net/qq_42036616/article/details/82955967

  • 相关阅读:
    Python 必备神器
    python 常用库
    Sublime Text3 配置 Python2 Python3
    Python JSON
    Sublime Text3 3143 注册码
    EFCode First 导航属性
    EF Code First:实体映射,数据迁移,重构(1)
    Entity Framework 复杂类型
    EF 7 Code First
    EF Code First 导航属性 与外键
  • 原文地址:https://www.cnblogs.com/Alitar/p/10836495.html
Copyright © 2020-2023  润新知