微信小程序实现点赞业务

 4115

这篇文章主要为大家详细介绍了微信小程序实现点赞业务,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了微信小程序实现点赞业务的具体代码,供大家参考,具体内容如下:

一、效果

微信小程序实现点赞业务


二、实现

一、逻辑

1、从登录界面时,用户数据已经缓存到本地,在onload中从本地获取用户信息保存在data.userInfo中

2、判断用户的_openid是否在loveList返回的列表中,如果是取消赞,如果不是点赞加入昵称到loveList中

3、下面用的是nickName判断,后期优化成使用_openid判断


微信小程序实现点赞业务

微信小程序实现点赞业务

微信小程序实现点赞业务

微信小程序实现点赞业务


二、wxml

  1. <!-- wx:index = "index":列表循环后所有位置都可以访问索引 -->
  2. <view class="item" wx:for="{{list}}" wx:index = "index">
  3.     <view class="left">
  4.         <image class="avatar"></image>
  5.     </view>
  6.     <view class="right">
  7.         <view class="nickname">{{item.nickName}}</view>
  8.         <view class="content">{{item.content}}</view>
  9.         <view class="image-list">
  10.             <image class="image" wx:for="{{item.imageList}}"></image>
  11.         </view>
  12.         <view class="time-area">
  13.             <view class="time">{{item.time}}</view>
  14.             <view>
  15.                 <!--
  16.                 data-index="{{index}}"
  17.                 1.设置后在回调函数中currentTarget.dataset中显示
  18.                 -->
  19.                 <image class="operation-button" src="../../images/caozuo.png" catchtap="showOperationPannel" data-index="{{index}}"></image>
  20.                 <!-- 判断当前索引和面盘索引是否一致 -->
  21.                 <view class="operation-pannel" wx:if="{{showOperationPannelIndex == index}}">
  22.                     <!-- 设置索引和点击函数 -->
  23.                     <view class="tab" catchtap="clickLove" data-index="{{index}}">
  24.                         <image class="image" src="../../images/love-white.png"></image>
  25.                         <text></text>
  26.                     </view>
  27.                     <view class="tab">
  28.                         <image class="image" src="../../images/comment-white.png"></image>
  29.                         <text>评论</text>
  30.                     </view>
  31.                 </view>
  32.             </view>  
  33.         </view>
  34.         <view class="love-comment">
  35.             <!-- 
  36.             item.loveList=重复
  37.             item.loveList
  38.             <view class="love" wx:if="{{item.loveList.length > 0}}">
  39.                 <image class="love-icon" src="../../images/love-blue.png"></image>
  40.                 <text class="love-nickname" wx:for="{{item.loveList}}">老夫子 兰陵王</text>
  41.             </view>
  42.             -->
  43.             <view class="love" wx:if="{{item.loveList.length > 0}}">
  44.                 <image class="love-icon" src="../../images/love-blue.png"></image>
  45.                 <!-- love和整个循环的item不冲突 -->
  46.                 <text class="love-nickname" wx:for-items="{{item.loveList}}" wx:for-item = "love">{{love.nickName}}</text>
  47.             </view>
  48.             <view class="comment" wx:if="{{item.commentList.length > 0}}">
  49.                 <view wx:for-items="{{item.commentList}}" wx:for-item = "comment">
  50.                     <text class="comment-nickname">{{comment.nickName}}</text>
  51.                     <text class="comment-content">{{comment.content}}</text>
  52.                 </view>
  53.             </view>
  54.         </view>
  55.     </view>
  56. </view>

三、js

  1. // pages/circle/list.js
  2. var that;
  3. Page({
  4.     /**
  5.      * 页面的初始数据
  6.      */
  7.     data: {
  8.         userInfo:null,
  9.         list:[],
  10.         // 当前点击操作面板的索引,每条朋友圈一个面板
  11.         showOperationPannelIndex:-1,
  12.     },
  13.     /**
  14.      * 生命周期函数--监听页面加载
  15.      */
  16.     onLoad: function (options) {
  17.         that = this;
  18.         for (var i = 1; i < 10; i++) {
  19.             // 定义一个对象存储数据
  20.             var circleData = {};
  21.             circleData.nickName = "朋友-" + i;
  22.             circleData.content = "朋友发布内容-" + i;
  23.             circleData.time = "2020-05-0" + i;
  24.             //图片列表
  25.             var imageList = [];
  26.             // 点赞列表
  27.             var loveList = [];
  28.             // 评论列表
  29.             var commentList = [];
  30.             // 这三个数组赋值给circleData
  31.             circleData.imageList = imageList;
  32.             circleData.loveList = loveList;
  33.             circleData.commentList = commentList;
  34.             // 给3个数组赋值
  35.             for (var j = 1; j < i; j++) {
  36.                 // 图片路径,占位
  37.                 imageList.push(j);
  38.                 // loveList,定义loveData对象
  39.                 var loveData = {};
  40.                 loveData.nickName = '点赞-' + j;
  41.                 // 点赞数组加入loveList
  42.                 loveList.push(loveData);
  43.                 // 评论数据
  44.                 var commentData = {};
  45.                 commentData.nickName = "兰陵王-" + j + ":";
  46.                 commentData.content = "评论内容-" + j;
  47.                 // 加入数据
  48.                 commentList.push(commentData);
  49.             }
  50.             that.data.list.push(circleData);
  51.         }
  52.         // 重新渲染
  53.         that.setData({
  54.             list: that.data.list
  55.         })
  56.         //获取用户信息
  57.         wx.getStorage({
  58.             key: 'userInfo',
  59.             success(res){
  60.                 //转换成对象
  61.                 console.log("getStorage success:",JSON.parse(res.data));
  62.                 that.setData({
  63.                     userInfo:JSON.parse(res.data)
  64.                 })
  65.             }
  66.         })
  67.     },
  68.     //控制操作面板展示
  69.     showOperationPannel(e){
  70.         console.log("showOperationPannel",e);
  71.         // 获取点击的索引
  72.         var index = e.currentTarget.dataset.index;
  73.         // 如果正在展示,则关闭
  74.         if(that.data.showOperationPannelIndex == index){
  75.             that.setData({
  76.                 // 索引从0开始
  77.                 showOperationPannelIndex:-1
  78.             })
  79.         } else {
  80.             that.setData({
  81.                 // 设置成当前点击的索引
  82.                 showOperationPannelIndex:index
  83.             })
  84.         } 
  85.     },
  86.     // 点赞功能
  87.     clickLove(e){
  88.         console.log(e);
  89.         var index = e.currentTarget.dataset.index;
  90.         // 将这条数据取出
  91.         var circleData = that.data.list[index];
  92.         var loveList = circleData.loveList;
  93.         var isHaveLove = false;
  94.         for(var i = 0; i < loveList.length; i++){
  95.             if(that.data.userInfo.nickName == loveList[i].nickName){
  96.                 isHaveLove = true;
  97.                 // 移除点赞
  98.                 loveList.splice(i,1);
  99.                 break;
  100.             }
  101.         }
  102.         if(!isHaveLove){
  103.             loveList.push({nickName:that.data.userInfo.nickName});
  104.         }
  105.         that.setData({
  106.             list:that.data.list,
  107.             // 关闭点赞评论面板
  108.             showOperationPannelIndex:-1
  109.         })
  110.     }, 
  111. })


TAG标签:
本文网址:https://www.zztuku.com/index.php/detail-8655.html
站长图库 - 微信小程序实现点赞业务
申明:如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐