小程序点赞收藏功能的实现代码示例


Posted in Javascript onSeptember 07, 2018

本文介绍了小程序点赞收藏功能的实现代码示例,分享给大家,具体如下:

/收藏/

focusFavoriteTab: function (e) {
  var that = this;
  var isFocus = that.data.isFocus;
  console.log("isFocus", isFocus)
  var itemId = that.data.itemId;
  if (isFocus) {
   favoriteService.cancel(that, itemId).then((res) => {
    wx.showToast({
     title: "取消收藏",
     icon: 'success',
     duration: 1000
    });
    this.setData({
     isFocus: false,
    });
   })
  } else {
   favoriteService.add(that, itemId).then((res) => {
    wx.showToast({
     title: res.data == 1 ? "收藏成功" : "收藏失败",
     icon: 'success',
     duration: 1000
    });
    this.setData({
     isFocus: true,
    });
   });
  }
 },

/点赞/

focuslikeTab: function (e) {
  var that = this;
  var isLike = that.data.isLike;
  let itemDetail = this.data.itemDetail 
  var itemId = that.data.itemId;
  if (isLike) {
   itemService.cancellike(that, itemId).then((res) => {
    wx.showToast({
     title: "点赞取消",
     icon: 'success',
     duration: 1000
    });
    itemDetail.liked--;
    this.setData({
     itemDetail:itemDetail
    });
    this.setData({
     isLike: false,
    });
   })
  } else {
   itemService.addlike(that, itemId).then((res) => {
    wx.showToast({
     title: res.data == 1 ? "点赞成功" : "点赞失败",
     icon: 'success',
     duration: 1000
    });
    itemDetail.liked++;
    this.setData({
     itemDetail: itemDetail
    });
    this.setData({
     isLike: true,
    });
   });
  }
 },

取消点赞功能

/*更新点赞*/ 
 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 相关文章推荐
JavaScript mapreduce工作原理简析
Nov 25 Javascript
封装好的js判断操作系统与浏览器代码分享
Jan 09 Javascript
JS实现文档加载完成后执行代码
Jul 09 Javascript
jQuery超酷平面式时钟效果代码分享
Mar 30 Javascript
JavaScript中判断数据类型的方法总结
May 24 Javascript
jquery的checkbox,radio,select等方法小结
Aug 30 Javascript
利用ECharts.js画K线图的方法示例
Jan 10 Javascript
vue-lazyload图片延迟加载插件的实例讲解
Feb 09 Javascript
vue 实现复制内容到粘贴板clipboard的方法
Mar 17 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
jQuery实现合并表格单元格中相同行操作示例
Jan 28 jQuery
layui动态绑定事件的方法
Sep 20 Javascript
前端防止用户重复提交js实现代码示例
Sep 07 #Javascript
vue实现打印功能的两种方法
Sep 07 #Javascript
使用Angular-CLI构建NPM包的方法
Sep 07 #Javascript
详解如何构建一个Angular6的第三方npm包
Sep 07 #Javascript
vue2.0 可折叠列表 v-for循环展示的实例
Sep 07 #Javascript
Js中使用正则表达式验证输入是否有特殊字符
Sep 07 #Javascript
vue.js+element-ui动态配置菜单的实例
Sep 07 #Javascript
You might like
PHP JSON 数据解析代码
2010/05/26 PHP
php设计模式之委托模式
2016/02/13 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
jQuery操作Select的Option上下移动及移除添加等等
2013/11/18 Javascript
学习vue.js计算属性
2016/12/03 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
JavaScript实现区块链
2018/03/14 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
Python的Flask框架与数据库连接的教程
2015/04/20 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
python tornado微信开发入门代码
2018/08/24 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
举例讲解Python常用模块
2019/03/08 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
在Python中COM口的调用方法
2019/07/03 Python
python sorted方法和列表使用解析
2019/11/18 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
导购员的岗位职责
2014/02/08 职场文书
119消防日活动总结
2014/08/29 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
营运督导岗位职责
2015/04/10 职场文书
消费者投诉书范文
2015/07/02 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers