本文编写于 592 天前,最后修改于 592 天前,其中某些信息可能已经过时。

最近要赶一个小程序

假定一个情形: 为某一个物品投票,投了票之后就不可以再投,在具体页面显示您已经投过票,在众多商品页面,投票的那几个显示已经投过票 使用js的array来进行记录

先创建数组

let that = this 
if (wx.getStorageSync('vote_' + that.data.program.event_id)) {
    //有就读取
    var hasMarkedArr = wx.getStorageSync('vote_' + that.data.program.event_id);
} else {
    //没有就创建
    var hasMarkedArr = Array()
}
    //把投票的这个物品序号推到数组里面
    hasMarkedArr.push(that.data.program.college_id)
    //同步到storage中
    wx.setStorageSync('vote_' + that.data.program.event_id, hasMarkedArr)

然后在需要用到的单页面js使用includes判断是否在数组中

let hasMarkedArr = wx.getStorageSync('vote_' + options.event_id);
    console.log(hasMarkedArr)
    console.log(options.college_id)
    console.log(hasMarkedArr.includes(options.college_id))
    if (hasMarkedArr.includes(parseInt(options.college_id))) {
      that.setData({
        button: true,
        buttonText: "您已参加过评分"
      })
    }

多页需要用到显示是否投过票,在wxml上只能使用wxs进行数组遍历达到目的,就草率一点,此外在js中需要先传入array

<view wx:if="{{vote.isVote(item.college_id,voteArr)}}" class="candidate_vote">已投票</view>

<wxs module="vote">
var isVote = function(college_id,array) {
  for (var i = 0; i < array.length; ++i) {
      if(array[i]==college_id){
        return true
      }
  }
  return false
}
module.exports.isVote = isVote;
</wxs>

然后即可实现