文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

vue组件实现发表评论功能

2024-04-02 19:55

关注

本文实例为大家分享了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>

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯