模拟朋友圈实时点赞及评论功能
点赞思路:点击的时候,使用push(点赞)以及slice(取消赞)方法处理数组,并且调用点赞接口
评论思路:点击的时候,写多一个评论列表,当点击发送的时候commentStatus=true,且索引等于点击的索引。同时调用获取评论列表的接口
html
<view> <view>{{item.timetype}}</view> <!-- 点赞 如果islove==1,图片变为点赞的图片--> <view @tap="like(index,item.id)"> <image :src="item.islove==1?'../../static/images/lllllike.png':'../../static/images/llike.png'"></image> </view> <!-- 评论 --> <view @tap="comment(index,item.id)"> <image src=""></image> </view> </view> <!-- 赞/评论区 --> <view> <!-- 点赞区 --> <view v-if="item.lovelist.length>0"> <image src=""></image> <text v-for="(love,love_index) of item.lovelist" :key="love_index">{{love.name}},</text> </view> <!-- 评论区 --> <view v-if="item.community_on.length>0" v-for="(comment,comment_index) in item.community_on" :key="comment_index"> <text>{{comment.nickname}}: <text>{{comment.content}}</text></text> </view> <!-- 当评论发送成功之后实时渲染出来评论列表--> <view v-if="commentStatus && index==commentIndex"> <text>{{realtimename}}: <text>{{realtimecontent}}</text></text> </view> </view>
// 点赞 like(index,communityId) { if (this.community[index].islove == 0) { this.community[index].islove = 1; this.community[index].lovelist.push( {name:this.userinfo.nickname,vipid:this.userinfo.id} ) this.likeImport(communityId) } else { this.community[index].islove = 0; this.community[index].lovelist.splice(this.community[index].lovelist.indexOf(this.userinfo.nickname), 1) this.likeImport(communityId) } }, // 点赞接口 likeImport(id) { app.vipidRequest({ url: 'Vip/community_love', data: { id: id }, header: { 'content-type': 'application/x-www-form-urlencoded', }, method: 'POST', success:(res) => { if(res.data.status) { } else { console.log(res.data) } } }) },
// 点击评论 comment(index,communityId) { this.showInput = true; //调起input框 this.focus = true; // 对焦 this.communityId = communityId }, // 点击发送 send_comment: function(message) { this.commentStatus = true this.commentIndex = index this.realtimecontent = message.content this.realtimename = this.userinfo.nickname app.vipidRequest({ url: 'Vip/community_on', data: { id: this.communityId, content: message.content, type: 1 }, header: { 'content-type': 'application/x-www-form-urlencoded', }, method: 'POST', success:(res) => { if(res.data.status) { this.getCommunity() // 整个页面数据刷新 this.init_input() this.commentStatus = false // 临时渲染评论的列表隐藏 this.realtimecontent = '' this.realtimename = '' this.input_placeholder = '评论'; } else { console.log(res.data) } } }) } // 取消评论/评论完成输入框状态值 init_input() { this.showInput = false; this.focus = false; this.input_placeholder = '评论'; this.is_reply = false; },