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


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脚本性能优化注意事项
Nov 18 Javascript
jquery的flexigrid无法显示数据提示获取到数据
Jul 19 Javascript
jQuery选择器全面总结
Jan 06 Javascript
jQuery中:visible选择器用法实例
Dec 30 Javascript
javascript 动态修改css样式方法汇总(四种方法)
Aug 27 Javascript
jquery mobile界面数据刷新的实现方法
May 28 Javascript
Bootstrap和Java分页实例第二篇
Dec 23 Javascript
10道典型的JavaScript面试题
Mar 22 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
Jun 05 Javascript
使用JavaScript实现链表的数据结构的代码
Aug 02 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 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中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
JavaSript中变量的作用域闭包的深入理解
2014/05/12 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
vue-music关于Player播放器组件详解
2017/11/28 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
Python md5与sha1加密算法用法分析
2017/07/14 Python
Python实现简单的语音识别系统
2017/12/13 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
以下的初始化有什么区别
2013/12/16 面试题
土木工程师职业规划范文
2014/03/07 职场文书
家教广告词
2014/03/19 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
个人总结怎么写
2015/02/26 职场文书
求职自我推荐信
2015/03/24 职场文书