uniapp---多选框功能

//多选
<checkbox-group @change="checkboxChange">
        <view class="y-list-item" v-for="(item,index) in details" :key="index">
          <view class="flex">
            <view class=""> 
              <checkbox :value="String(item.id)"  //不用string类型会报错                                   
                :checked="checkboxValue.includes(item.id)" />                  
            </view>
            //其他代码可以根据位置书写
          </view>
</checkbox-group>

//全选
<checkbox-group @change="allChoose">
              <label>
                <checkbox value="1" :checked="allChecked?true:false"></checkbox><span         
                    style="margin-right: 10rpx;">全选 </span>
              </label>
</checkbox-group>

//data数据
 data() {
      return {
        details: [], 
        checkboxValue: [], //多选框值
        allChecked: false, //是否全选
      }
  },

 //多选事件
checkboxChange(item) {
        this.checkboxValue = item.detail.value
        if (this.checkboxValue.length > 0 && this.checkboxValue.length == this.details.length) {  //判断选中长度和你的内容长度是否一致,如果一致更改全选状态
          this.allChecked = true;
        } else {
          this.allChecked = false;
        }
      },
      // 全选事件
      allChoose(item) {
        let choose = item.detail.value;
        // 全选
        if (choose[0] == '1') {
          this.allChecked = true;
          for (let res of this.details) {
            let res = item.id;
            if (!this.checkboxValue.includes(res)) {
              this.checkboxValue.push(res);
            }
          }
        } else {
          // 取消全选
          this.allChecked = false;
          this.checkboxValue = [];
        }
      },

### 创建带有多选框的列表组件 在 UniApp 中创建带有多选框的列表组件可以通过多种方式实现。一种常见的方式是利用 `uView` 组件库来简化开发过程。 #### 使用 uView 实现多选框列表 首先,安装并配置好 `uView` 组件库之后,可以按照如下方法构建一个多选框列表: 1. **创建 Components 文件夹** 为了更好地管理项目结构,在项目的根目录下创建一个名为 `components` 的文件夹用于存放自定义组件[^1]。这有助于保持代码整洁有序,并且便于维护。 2. **编写 SelectionRange.vue 自定义组件** 在这个例子中,假设已经有一个叫做 `SelectionRange.vue` 的 Vue 单文件组件,它实现了基本的选择功能。此组件应该被放置于上述提到的 `components` 文件夹内[^3]。 ```html <template> <view class="selection-list"> <!-- 列表项 --> <block v-for="(item, index) in items" :key="index"> <label class="checkbox-item"> <input type="checkbox" v-model="selectedItems" :value="item.value"/> {{ item.label }} </label> </block> </view> </template> <script> export default { props: ['items'], data() { return { selectedItems: [] } }, } </script> <style scoped> .selection-list .checkbox-item { /* 样式可以根据需求调整 */ } </style> ``` 这段代码展示了如何通过遍历传入的数据属性 `items` 来动态生成一系列带有复选框的选项。每个 `<input>` 元素都绑定了同一个数组变量 `selectedItems` ,这样当用户勾选某个复选框时就会自动更新这个共享的状态。 3. **导入并使用 SelectionRange 组件** 最后一步是在页面或其他父级容器里注册并实例化刚才制作好的 `SelectionRange` 组件。如果遵循的是传统 Vue.js 开发模式,则需手动引入路径;而在 UniApp 下则无需显式声明依赖关系即可直接调用。 ```html <!-- 假设这是 pages/index/index.vue 文件的内容片段 --> <template> ... <SelectionRange :items="dataList"></SelectionRange> ... </template> <script> import SelectionRange from '@/components/SelectionRange.vue' export default { components: { SelectionRange }, data() { return { dataList: [ { label: 'Option A', value: 'a' }, { label: 'Option B', value: 'b' }, // 更多项... ] }; } }; </script> ``` 以上就是基于 `uView` 和原生 HTML/CSS 构建的一个简单但实用的多选框列表解决方案。当然实际应用可能还需要考虑更多细节比如样式美化、交互逻辑优化等方面的工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值