千家信息网

如何用vuejs实现评论功能

发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,这篇文章主要介绍"如何用vuejs实现评论功能",在日常操作中,相信很多人在如何用vuejs实现评论功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用vuejs实
千家信息网最后更新 2024年11月29日如何用vuejs实现评论功能

这篇文章主要介绍"如何用vuejs实现评论功能",在日常操作中,相信很多人在如何用vuejs实现评论功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用vuejs实现评论功能"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

用vuejs实现评论功能的方法:1、使用article-content组件,绑定一个obj;2、通过commemt-content组件实现评论功能即可。

本文操作环境:windows7系统、vue2.9.6版,DELL G3电脑。

怎么用vuejs实现评论功能?

Vue.js实现文章评论和回复评论功能:

本来想把这个页面用jade渲染出来、评论部分用vue,但是想了想觉得麻烦,最后还是整个用vue的组件搞定他吧。
先上在线demo:http://jsbin.com/ceqifo/1/edit?js,output

再上效果图

可直接评论,点击别人的评论能回复别人的评论。

html

数据全都由根组件绑定下去的。这里还监听了几个事件。

然后先说个简单点的,,文本框的那个组件。

Vue.component('commentTextarea',{ template:'\ 
\

发表评论

\ 你回复 {{name}}\ \ \ \
', props: ['type','name'], data: function(){ return {commentText:""} }, methods: { addComment: function() { this.$emit("submit",this.commentText); this.commentText = ""; }, canelComment: function() { this.$emit("canel"); this.commentText = ""; } }});

type是如果点击了别人的评论,会显示 "你回复xxx " 的提示框,这个因为跨了组件通信而且两组件不是父子组件但是是兄弟组件,我把他们的通信挂在了父组件的一个属性上,实现通信。

文本框内的内容用一个v-model双向绑定,如果点击了确定,就触发一个 addComment事件并把文本内容传给父组件,父组件会监听事件。

commemt-content组件-评论内容

先来确定json格式

comment: [ { name: "有毒的黄同学", //评论人名字 time: "2016-08-17",  content: "好,讲得非常好,good", reply: [ //回复评论的信息,是一个数组,如果没内容就是一个空数组 { responder: "傲娇的", //评论者 reviewers: "有毒的黄同学", //被评论者 time: "2016-09-05", content: "你说得对" } } ]

再来看commemt-content组件

Vue.component('commemt-content',{ template:'\ 
\

评论

\

暂无评论,我来发表第一篇评论!

\
\
\ {{item.name}}{{item.time}}\

{{item.content}}

\
\
\ {{reply.responder}}  回复  {{reply.reviewers}}{{reply.time}}\

{{reply.content}}

\
\
\
\
\
', props: ['comment'], methods: { changeCommenter: function(name,index) { this.$emit("change",name,index); } }});

如果没有内容,则显示 "暂无评论,我来发表第一篇评论!"。如果有内容就开始遍历。因为点击评论要知道第几条,所以每条评论要绑一个v-bind:index="index"

到了二次评论那块,还是遍历reply数组,绑定该绑定的。因为就算点击内容,也是加到那条一级评论的最下面,所以两个点击事件我都是绑定了同一个事件。只是传进去的名字不一样而已,后面那个index都是一级评论的index。

changeCommenter事件触发了change,父组件监听,执行相应行为。

父组件

var comment = new Vue({ el: "#comment", data: { commenter: "session", //评论人,这里会从session拿 type: 0, //0为评论作者1为评论别人的评论 oldComment: null, //久评论者的名字 chosedIndex: -1, //被选中的评论的index article: { title: "当归泡水喝的九大功效", time: "2016-07-12", read:50, content: "" }, comment: [] //评论内容 }, methods: { //添加评论 addComment: function(data) { if(this.type == 0) { this.comment.push({  name: 'session',  time: getTime(),  content: data,  reply: [] }); //服务器端 }else if(this.type == 1){ this.comment[this.chosedIndex].reply.push({  responder: 'session',  reviewers:this.comment[this.chosedIndex].name,  time: getTime(),  content: data }); this.type = 0; } }, //监听到了点击了别人的评论 changCommmer: function(name,index) { this.oldComment = name; this.chosedIndex = index; this.type = 1; }, //监听到了取消评论 canelCommit: function() { this.type = 0; } }})

data那里。。。实在是取名困难症啊。。。commenter是当前登录名,这里到时候会session里拿;type就是看到底是评论作者的还是评论别人的评论的;oldComment就是就评论者的名字(实际储存的时候应该是id);chosedIndex是被点击的评论的index。

canelCommit是监听到取消评论事件,这里是为了如果了点击了别人的评论但是突然我就是想变评论作者用的。所以设type=0;

changCommmer是监听到点击了别人评论想回复评论的。即type=1.

addComment就是监听添加评论事件的。根据type的值,push相应的数组。这里还要记得跟数据库那个对接。传数据有两种方法,这里是根据type的不同分两个url传还是一个,取决于表的设计。待我明天好好设计表后,加入http请求,完成这个评论功能。

到此,关于"如何用vuejs实现评论功能"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

评论 组件 功能 内容 事件 就是 名字 数据 数组 文本 还是 学习 监听 作者 文章 方法 评论者 通信 两个 信息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 方舟服务器管理怎怎么刷东西 工行珠海软件开发中心刘映镇 服务器ip被封了怎么样解封 2021网络安全周宣传片直播 广州易达软件开发有限公司 网络安全宣传周潮州 易飞erp系统数据库操作 手机游戏软件开发自考专业 我的世界宝可梦服务器多人空岛 软件开发招标提问问题 深圳市会友互联网络科技有限公司 哪里的即时通讯软件开发 安徽网络授时服务器云空间 网络安全开幕式2020 三级计算机网络技术取证 中小学生法制频道网络安全 青岛对日软件开发公司 数据库服务器功能 网络安全如今形势 微信服务器号 管理地址 中文和西文法律数据库 工行珠海软件开发中心刘映镇 中国国产数据库系统有哪些 自己制作服务器需要什么设备 哪个数据库软件简单好用 马云招聘网络安全员 大学网络安全内容 服务器的配置怎么选 服务器硬盘改普通硬盘 从事网络技术的高级职称有哪些
0