微信小程序系列八:使用view实现全选,单选

原理:

    根据数据的checked属性值判断是否处于选中状态

注意:

   样式可以自己调整,这里不再添加

wxml:

<block wx:for="{{list}}" wx:key="*this.index">
  <view data-index="{{index}}" data-name="{{item.id}}" class="{{item.checked==true?'red bc':'bc'}}"bindtap='select'>
    {{item.name}}
  </view>
</block>
<button bindtap='selectAll'>全选</button>

js:

Page({

  /**
   * 页面的初始数据
   */
  data: {
    list:[
      { id: 1, name: 1, checked:false},
      { id: 2, name: 2, checked: false },
      { id: 3, name: 3, checked: false },
      { id: 4, name: 4, checked: false },
    ],
    select:[]
  },
  //单选
  select:function(e){
    let selectValue = e.currentTarget.dataset.name
    let index = e.currentTarget.dataset.index;
    let list = this.data.list
    let newli = 'list[' + index +'].checked';
    this.setData({
      [newli]: !this.data.list[index].checked
    })
    let li2 = this.data.list[index].checked
    if (li2==false){
      for (let i in this.data.select) {
        if (this.data.select[i] == selectValue) {
          this.data.select.splice(i,1);
        }
      }
    } else{
      this.data.select.push(selectValue);
    }
    console.log(this.data.select)
  },
  //全选,取消全选
  selectAll:function(e){
    let list=this.data.list;
    for(let i=0;i<list.length;i++){
      let newli = 'list[' + i + '].checked';
      this.data.select.push(this.data.list[i].id);
      this.setData({
        [newli]: !this.data.list[i].checked
      })
    }
    console.log(this.data.select)
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  
  }
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值