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


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关闭子窗体刷新父窗体实现方法
Dec 04 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
JS实现自适应高度表单文本框的方法
Feb 25 Javascript
JavaScript jquery及AJAX小结
Jan 24 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
你不知道的 javascript【推荐】
Jan 08 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
May 02 Javascript
jqueryUI tab标签页代码分享
Oct 09 jQuery
Vue实现动态创建和删除数据的方法
Mar 17 Javascript
vuex 的简单使用
Mar 22 Javascript
layui按条件隐藏表格列的实例
Sep 19 Javascript
axios封装与传参示例详解
Oct 18 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
php生成QRcode实例
2014/09/22 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
php数据序列化测试实例详解
2017/08/12 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
Python数组并集交集补集代码实例
2020/02/18 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
Python用SSH连接到网络设备
2021/02/18 Python
应聘美工求职信
2013/11/07 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
武夷山导游词
2015/02/03 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
swagger如何返回map字段注释
2021/07/03 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android