微信小程序实现列表页的点赞和取消点赞功能


Posted in Javascript onNovember 02, 2018

今天开发了一个文章的留言版块,于是想到要为某个留言点赞,点过赞的再次点击会取消点赞,代码如下:

/*更新点赞*/ 
 update_zan:function(e){ 
  var that = this; 
  var data = e.currentTarget.dataset; 
  var mid = data.mid; 
  var cookie_mid = wx.getStorageSync('zan') || [];//获取全部点赞的mid 
  var isadd = 1; 
  var newmessage = []; 
  if (cookie_mid.includes(mid)){//说明已经点过赞,取消赞 
   isadd = 0; 
   var m = 0; 
   for (var j in cookie_mid){ 
    if(cookie_mid[j] != mid){ 
     newmessage[m] = cookie_mid[j]; 
     m++ 
    } 
   } 
   wx.setStorageSync('zan', newmessage);//删除取消赞的mid 
  }else{ 
   cookie_mid.unshift(mid); 
   wx.setStorageSync('zan', cookie_mid);//新增赞的mid 
  } 
  wx.request({ 
   url: app.globalData.api.api_system, 
   data: { 
    action: 'zannum', 
    mid: mid, 
    isadd: isadd, 
    wxid: app.globalData.wxid 
   }, 
   method: 'GET', 
   // header: {},  
   success: function (res) { 
    var message = that.data.message; 
    for (var i in message) { 
     if(message[i].mid == mid){ 
      if(isadd){ 
       message[i].zan = parseInt(message[i].zan) + 1 
      }else{ 
       message[i].zan = parseInt(message[i].zan) - 1 
      } 
       
     } 
    } 
    that.setData({ 
     message: message 
    }) 
   } 
  })

重点注意代码:

(1)要把所有已经点过赞的留言id给存储到本地缓存之中,这样如果重复点赞的,就可以判断出来,并取消点赞,取消点赞的同时要去掉缓存中的id;
(2)新增点赞和取消点赞用到同一个api,通过isadd=1或者isadd=0来判断是新增还是取消点赞
(3)为了不频繁去读取留言列表,可以直接调用this.data.message,并通过循环遍历改变某个留言的点赞数,然后直接重新赋值,就能动态改变点赞数!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery BS,dialog控件自适应大小
Jul 06 Javascript
JavaScript中常见陷阱小结
Apr 27 Javascript
JQuery each()嵌套使用小结
Apr 18 Javascript
javascript自动切换焦点控制效果完整实例
Feb 02 Javascript
jquery trigger实现联动的方法
Feb 29 Javascript
BootStrap中的表单大全
Sep 07 Javascript
微信小程序中form 表单提交和取值实例详解
Apr 20 Javascript
jQuery实现手势解锁密码特效
Aug 14 jQuery
vue环境搭建简单教程
Nov 07 Javascript
详解Js里的for…in和for…of的用法
Mar 28 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
May 10 Javascript
分享一个vue项目“脚手架”项目的实现步骤
May 26 Javascript
React如何解决fetch跨域请求时session失效问题
Nov 02 #Javascript
element ui table 增加筛选的方法示例
Nov 02 #Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 #Javascript
详解使用element-ui table组件的筛选功能的一个小坑
Nov 02 #Javascript
如何使用vuex实现兄弟组件通信
Nov 02 #Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
Nov 02 #Javascript
vue头部导航动态点击处理方法
Nov 02 #Javascript
You might like
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
CentOS安装php v8js教程
2015/02/26 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
python获取引用对象的个数方式
2019/12/20 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
python numpy实现rolling滚动案例
2020/06/08 Python
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
驻村工作先进事迹
2014/08/14 职场文书
领导欢送会主持词
2015/07/06 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
python 下载文件的几种方式分享
2021/04/07 Python
PHP使用非对称加密算法RSA
2021/04/21 PHP