roujennie 2022-11-15 12:09 采纳率: 84%
浏览 4
已结题

微信开发 点击tab上的x,对应改变checkbox的是否勾选状态

用代码块功能插入代码,请勿粘贴截图

图上灰色标签渲染

<view class="tab" wx:for="{{codelist}}" wx:key="status" wx:if="{{item.Checked == true}}">
        <label for="status">
                {{item.statusName}}
                <image catchtap="deleteTab" data-status="{{item.status}}" src="/image/x.png"></image>
        </label>
                    
</view>    

img

checkbox

<checkbox-group id="statusUTypeList" name="statusUTypeList" bindchange="select" data-status="{{item.status}}" class="popup-row">
            <checkbox wx:for="{{codelist}}" wx:key="status" value="{{item.status}}" id="status">
                {{item.statusName}}
            </checkbox>
        </checkbox-group>


img

select(e){
            console.log(e)
            let status = e.detail.value;
            // var result = new Array();
            let result;
            // 新增值
            if(status.length>this.data.oldvalue.length){
                for(var i=0;i<status.length;i++){
                    if(this.data.oldvalue.indexOf(status[i]) == -1)    {
                //   result.push(status[i]);
                    result = status[i]
                    }      
                }
            }else{ //减少
                for(var i=0;i<this.data.oldvalue.length;i++){
                    if(status.indexOf(this.data.oldvalue[i]) == -1)    {
                //   result.push(status[i]);
                    result = this.data.oldvalue[i]
                    }      
                }
            }

            let list = this.data.codelist;
            let index = list.findIndex(v =>v.status == result)
            list[index].Checked = !list[index].Checked;
            this.setData({
                  codelist:list,
                  oldvalue:status
            })
        },

我的解答思路和尝试过的方法

尝试用label标签绑定可是无效,我能做的点击×按钮改变codelist对应status的checked的值,但是checkbox里并没有把对应的选中状态取消

我想要达到的结果

点击tab上的x,对应改变checkbox的是否勾选状态

  • 写回答

1条回答 默认 最新

  • 这个需求做不了123 2022-11-15 14:15
    关注

    单纯看你这个代码,好像没啥问题,

    let list = this.data.codelist;
    let index = list.findIndex(v =>v.status == result)
     list[index].Checked = !list[index].Checked;
    // 你在这个位置打印console.log(list) ,看下你点击后,这个list有没有改变?如果变了,那说明你checkbox那里写得有问题
    // 另外 微信小程序得checkbox 太丑,一般都是自己模拟,定义一组数据,[{label: '发布', checked: false},{label: '审核', checked: false}]
    // 通过checked 得值,来渲染展示选中和未选中得样式,可以用小图标来做,
    this.setData({
        codelist:list,
         oldvalue:status
     })
    
    

    如果有问题,再找我

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 创建了问题 11月15日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理