微信小程序 checked 选择功能 js中获取对应的选择值的改变以及修改

要在js中获取checkbox选择值 必须在外面包裹一个checkbox-group

 

wxml 代码

  <scroll-view class="s_view" scroll-y="true">
        <block wx:for="{{list}}" wx:key="{{this}}">
            <view class="m_item" wx:key="{{index}}">
                <view class="m_left">
                    <checkbox-group bindchange="checkboxChange" data-index="{{index}}">
                        <label class="change_check">
                            <checkbox class="child" value="{{item.name}}" checked="{{item.checked}}"></checkbox>
                        </label>
                    </checkbox-group>
                    <image class="m_img" src="{{'../../../../'+item.img}}"></image>
                    <view class="m_text">
                        <text class="m_name">{{item.name}}</text>
                        <text class="m_num">{{item.num}}</text>
                        <text class="m_btn"></text>
                    </view>
                </view>
                <view class="m_icon">
                    <text class="m_del"></text>
                    <text class="m_edit"></text>
                </view>
            </view>
        </block>
    </scroll-view>

index.js中代码

 checkboxChange(e) {
    var arr = [...this.data.list];
    var postIndex=e.currentTarget.dataset.index;
    var len=e.detail.value.length;
    //选中
      arr.forEach((item,index)=>{
        if(index===postIndex){
          item.checked=(len!=0);
        }
      })
      //更新数据
      this.setData({
        list:arr
      },()=>{
        //处理选中的数组获取其长度
        var result=this.dealArr(this.data.list).length;
        //更新数据
        this.setData({
          arrLength:result
        })
      })
  },
  //过滤选中的数组
  dealArr(arr){
    return arr.filter((item,index)=>{
      if(item.checked===true){
        return true;
      }
    })
  },

 

posted @ 2021-05-12 15:23  还有什么值得拥有  阅读(1186)  评论(0编辑  收藏  举报