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


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实现轮显新闻标题链接
Aug 13 Javascript
js随机颜色代码的多种实现方式
Apr 23 Javascript
jquery实现div阴影效果示例代码
Sep 16 Javascript
玩转JavaScript OOP - 类的实现详解
Jun 08 Javascript
详解使用Node.js 将txt文件转为Excel文件
Jul 05 Javascript
node前端开发模板引擎Jade的入门
May 11 Javascript
angular2路由之routerLinkActive指令【推荐】
May 30 Javascript
Vue实现商品分类菜单数量提示功能
Jul 26 Javascript
layui.tree组件的使用以及搜索节点功能的实现
Sep 26 Javascript
Vue的props父传子的示例代码
May 20 Javascript
easyUI 实现的后台分页与前台显示功能示例
Jun 01 Javascript
js实现手表表盘时钟与圆周运动
Sep 18 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 cli换行示例
2014/04/22 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
angular分页指令操作
2017/01/09 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
使用python开发vim插件及心得分享
2014/11/04 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
2016/12/18 Python
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python request使用方法及问题总结
2020/04/26 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
python使用建议与技巧分享(二)
2020/08/17 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
Python偏函数实现原理及应用
2020/11/20 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
教师党员个人自我剖析材料
2014/09/29 职场文书
2014年残联工作总结
2014/11/21 职场文书
2014年医务科工作总结
2014/12/18 职场文书
服务员岗位职责
2015/02/03 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
入团介绍人意见范文
2015/06/04 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
HttpClient实现文件上传功能
2022/08/14 Java/Android