关于小程序缓存数据的方法记录与此:
需求点击收藏按钮,这里面出现问题了,起初使用setStorage的时候不起作用,因为没有渲染
后来换成了globalData,其中的代码不言而喻,还需要仔细琢磨。
第一种方法:使用setStorage和getStorage
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
favFood: function() { var that = this; console.log(that.data.id);//获取id的值 // 方法一:只存储id // var arr2 = that.data.listarr; // // var arr2 = app.globalData.favArr; // arr2.unshift(that.data.id); // var arrnum = arr2.indexOf(that.data.id);// 判断输入的值与之前数组有重复没 // if (arrnum != -1) { // arr2.splice(arrnum, 1) // arr2.unshift(that.data.id); // } else { // arr2.unshift(that.data.id); // } // 方法二:存储id title albums tags,构造Object对象存储 var arr2 = that.data.listarr; var ddd = new Object();//将下列获取的值存储在ddd中,并在arr2中累积 ddd.id = that.data.id, ddd.title = that.data.result.title, ddd.tags = getTagFormat(that.data.result.tags), ddd.albums = that.data.result.albums, console.log(ddd) // 遍历并判断输入的值与之前数组有重复没 var arrId =[]; for(var i=0;i<arr2.length;i++){ arrId.push(arr2[i].id) } if (arrId.indexOf(that.data.id)!=-1){//出现一样的了 console.log("怎么删除")//没有操作~ 就是最好的操作 }else{ arr2.unshift(ddd); } // var arrnum = arr2.indexOf(that.data.id);//indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。没有出现,返回-1 // if (arrnum != -1) { // // arr2.splice(arrnum, 1) // 删除已存在后重新插入至数组 // // arr2.unshift(that.data.id); // } else { // // arr2.unshift(that.data.id); // unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度 // } function getTagFormat(value) { var yy = []; for (var i = 0; i <= 3; i++) { var xx = value.split(';')[i]; yy.push(xx); } return yy; } //缓存的setStorage设置 wx.setStorage({ key: 'collect_arr', data: arr2, success: function() { wx.showToast({ title: '成功', }) that.setData({ collect:'已收藏' }) } }) }, onLoad: function(options) { var that = this that.setData({ id: options.id //options 带过来一个id }) console.log("打印出id" + options); //读取缓存历史搜索记录(重点) wx.getStorage({ key: 'collect_arr', success: function(res) { that.setData({ listarr: res.data }) console.log(res) } }) var posturl = api.apiList.menuDetail var postdata = { 'id': that.data.id, 'key': that.data.key } jiekou.getData.call(that, posturl, postdata, function(res) { if (res.error_code != 0) { wx.hideLoading(); wx.showModal({ title: "提示", content: '内容出错', showCancel: false, confirmText: "确定", success: function(res) { if (res.confirm) { wx.navigateBack({}) } } }) } else { wx.hideLoading(); that.setData({ result: res.result.data[0] }) } console.log("单项展示页面") console.log(res) }) }, |
第二种方法:使用 globalData
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//app.js globalData: { userInfo: null, appsession: false, favArr:[] //这里是定义的 } //menuListPage.js var app = getApp()//要引入 favFood: function() { ...... var arr2 = that.data.listarr; // var arr2 = app.globalData.favArr; arr2.unshift(that.data.id); var arrnum = arr2.indexOf(that.data.id);// 判断输入的值与之前数组有重复没 if (arrnum != -1) { arr2.splice(arrnum, 1) arr2.unshift(that.data.id); } else { arr2.unshift(that.data.id); } ...... } |