当前位置:首页 > 开发教程 > js/jQuery教程 >

vue组件实现发表评论功能

时间:2022-04-15 14:31 来源:未知 作者:感谢谎言 收藏

这篇文章主要为大家详细介绍了vue组件实现发表评论功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了vue组件实现发表评论的具体代码,供大家参考,具体内容如下

今天看了vue相关的视频,所以跟着做一个小demo把知识串联起来,内容很简单但是也算是学习道路上的一点进步。

1 思路分析

发表评论模块写入一个组件,提高复用性。
关键点:

1)、子组件通过localStorage向父组件传值
2)、子组件有自己的data存储user和content,即评论人和评论内容,也就是dom元素绑定的数据。
3)、点击‘发表评论’后,首先是将各条评论存入localStorage,然后通过在组件出绑定的函数调用父组件中的loadComments()加载评论。
4)、vue生命周期的熟悉。在created()中写入loadComments(),每次页面加载就会载入评论数据。

2 源代码

需要vue.js和bootstrap.js两个文件

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Page Title</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="../lib/vue.js"></script>
  <link rel="stylesheet" href="../lib/bootstrap.css">
  <style>
  li{
    list-style:none;
  }
  </style>
</head>
<body>
  <div id="app">
    <com @func="loadComments"></com>
    <ul class="list-group">
      <li class="list-group-item" v-for="item in list">
        {{item.content}}<span class="badge">{{item.user}}</span>
      </li>
    </ul>
  </div>
    <!-- 评论区组件 -->
  <template id="tmp">
    <div>
      <div class="form-group"><label>评论人</label><input class="form-control" id="user" v-model:value="user"/></div>
      <div class="form-group"><label>评论内容</label><input class="form-control" id="content" v-model:value="content"/></div> 
        <div><input type="button" class="btn btn-primary" value="发表评论" @click="postComments"/></div>
    </div>
  </template>
  <script>
  var tmp={
    template:"#tmp",
    data:function(){
      return {
        user:'',
        content:''
      }
    },
    methods:{
      postComments(){
        var comment={user:this.user,content:this.content};
        var list=JSON.parse(localStorage.getItem('cmts')||'[]');
        list.unshift(comment);
        localStorage.setItem('cmts',JSON.stringify(list));//数组对象和字符串相互转换的过程
        this.user='';
        this.content='';
        this.$emit('func');
      }
    }
  }
  var vm=new Vue({
    el:"#app",
    data:{
      list:[]
    },
    created(){
     this.loadComments();
    },
    methods:{
      loadComments(){
        this.list=JSON.parse(localStorage.getItem('cmts')||'[]');
      }
    },
    components:{
      'com':tmp
    }
   
  });
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持源码搜藏网。


下一篇:没有了

js/jQuery教程阅读排行

最新文章