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


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 相关文章推荐
一些有关检查数据的JS代码
Sep 07 Javascript
Flash+XML滚动新闻代码 无图片 附源码下载
Nov 22 Javascript
Firebug入门指南(Firefox浏览器)
Aug 21 Javascript
动态载入js提高网页打开速度的方法
Jul 04 Javascript
javascript学习笔记(七)Ajax和Http状态码
Oct 08 Javascript
jQuery检测返回值的数据类型
Jul 13 Javascript
javascript实现网页字符定位的方法
Jul 14 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
AngularJs expression详解及简单示例
Sep 01 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
浅谈Vue数据绑定的原理
Jan 08 Javascript
在 Angular中 使用 Lodash 的方法
Feb 11 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学习之PHP运算符
2006/10/09 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
python数据结构树和二叉树简介
2014/04/29 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
Python线程同步的实现代码
2018/10/03 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
基于Python实现简单学生管理系统
2020/07/24 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
美国轮胎网站:Priority Tire
2018/11/28 全球购物
国贸专业自荐信范文
2014/03/02 职场文书
简单租房协议书范本
2014/08/20 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
Python图片处理之图片裁剪教程
2021/05/27 Python