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


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日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
Mar 01 Javascript
JavaScript中的作用域链和闭包
Jun 30 Javascript
Juery解决tablesorter中文排序和字符范围的方法
May 06 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
Aug 15 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 Javascript
vue.js实现表格合并示例代码
Nov 30 Javascript
javascript 中模板方法单例的实现方法
Oct 17 Javascript
Elasticsearch实现复合查询高亮结果功能
Sep 10 Javascript
javascript canvas API内容整理
Feb 16 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 Javascript
JS数组去重详情
Nov 07 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模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
javascript中UMD规范的代码推演
2018/08/29 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
如何验证python安装成功
2020/07/06 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
施工人员岗位职责
2013/12/12 职场文书
开水果连锁店创业计划书
2013/12/29 职场文书
水电工岗位职责
2014/02/12 职场文书
公司担保书格式范文
2014/05/12 职场文书
会计求职自荐信范文
2015/03/04 职场文书
物业接待员岗位职责
2015/04/15 职场文书
承诺书范本大全
2015/05/04 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android