zoukankan      html  css  js  c++  java
  • 实现收藏功能

    利用本地存储实现收藏功能(小程序)

    1.定义数据结构

    data: {
    ​
       detail:{},//用来接收获取的数据
    ​
       no_sel:"../../images/none-star.png",//未被收藏的图片链接
    ​
       sel:"../../images/star.png",//被收藏的图片链接
    ​
       flag:false,//用来判断是否被收藏
    ​
       storeArr:[]//存储于本地的收藏的唯一标识
    ​
     },

    2.刚进入界面时发起的请求获取数据

    onLoad: function (options) {
            // console.log(options.id);
            wx.showLoading({
              title: '正在加载....',
            })
            http({
              url:'/1700-3',
              data:{
               showapi_appid:'100079',
               showapi_sign:"9e038adb10ef4cf68db6bc8d0feed220",
               id:options.id
              }
           }).then(res=>{
              //  console.log(res);
               wx.hideLoading();
               this.setData({
                  detail:res.data.showapi_res_body
               })
              //  console.log(this.data.detail);
               this.getflag();//调用自定义函数比较本地数据
           }) 
      },

    getflag

     getflag(){
        let arr =wx.getStorageSync('storeArr');
        if(!arr) return;
        // console.log(this.data.detail.classifyId);
        let st_id = arr.indexOf(this.data.detail.id)
        console.log(st_id);
        if(st_id!==-1){
            this.setData({
              flag:true
            })
        }else{
          this.setData({
            flag:false
          })
        }
        this.setData({
          id:st_id
       })
      },

    3.页面比较flag切换图片地址(detail.id唯一标识)

     <view>关注: sel
        <image src="{{flag?sel:no_sel}}" class="img"                    mode="widthFix" bindtap="collection" 
            data-id="{{detail.id}}">
        </image>
     </view>

    4.响应点击切换收藏事件

    collection(e){
          let id = e.currentTarget.dataset.id;
          let storeArr_l=[];
          let lishi=wx.getStorageSync('storeArr');
          lishi?storeArr_l=lishi:[];
          // console.log(storeArr_l);
          if(!this.data.flag){  
              storeArr_l.push(id);
              wx.setStorage({
                data: storeArr_l,
                key: 'storeArr',
              })
          }
          if(this.data.flag){
            storeArr_l=wx.getStorageSync('storeArr');
            let index = storeArr_l.indexOf(id)
            // console.log(storeArr_l);
            // console.log(index);
            storeArr_l.splice(index,1);//删除对应的数据
            // console.log(storeArr_l);
          }
          this.setData({
            flag:!this.data.flag//切换收藏状态
          })
          wx.setStorage({
            data: storeArr_l,
            key: 'storeArr',
          })
      },

     

    不停学习,热爱是源源不断的动力。
  • 相关阅读:
    一套测试题
    静态成员与友元
    grids2742
    [转]CentOS添加第三方yum源
    Linux软件包管理
    类的基本概念
    2012百度实习生笔试题(c++方向)
    anyview 数据结构习题集 第1章答案
    Linux常用命令
    anyview 数据结构习题集 第2章答案
  • 原文地址:https://www.cnblogs.com/ximenchuifa/p/13909141.html
Copyright © 2011-2022 走看看