vant作为一款适配手机的前端框架使用起来还是很方便的,但是对于Picker 选择器的拓展有限,不支持下拉多选的实现,这里通过van-checkbox-group 和 van-checkbox 组件来实现多选功能。
搭配van-popup 将弹窗内容写入
- <van-field v-model="userNameStr" readonly name="userIds" label="人员列表" placeholder="点击选择人员,可多选"
- @click="joinUsersHandleFocus" />
- <van-popup round v-model:show="showPicker" position="bottom" :>
-
- <van-button plain type="primary" size="small" @click="showPicker= false">取消</van-button>
- 选择人员
- <van-button plain type="primary" size="small" @click="onConfirmUsers">确定</van-button>
-
- <van-search v-model="searchParam" placeholder="请输入搜索关键词" @search="onSearchUsers" @clear="onClearSearch" />
- <van-checkbox-group v-model="studentGroupChecked">
- <van-cell v-for="user in filteredUserOptions" :key="user.value">
- <template #title>
- <van-checkbox :name="user.value">{{ user.text }}</van-checkbox>
- </template>
- </van-cell>
- </van-checkbox-group>
- </van-popup>
复制代码 这里通过van-search控制列表搜索,展示带选择框的列表,效果如下
showPicker控制van-popup和其包含的内容是否展示,onConfirmUsers为选中后点击确认调用的方法- const onConfirmUsers = () => {
- const selectedUsers = userOptions.value.filter(user => studentGroupChecked.value.includes(user.value));
- showPicker.value = false;
- };
复制代码 通过获取studentGroupChecke的值拿到选中项,对选中项的数据进行处理- const onSearchUsers = () => {
- if (!searchParam.value) {
- filteredUserOptions.value = userOptions.value;
- return;
- }
- filteredUserOptions.value = userOptions.value.filter(user =>
- user.text.toString().toLowerCase().includes(searchParam.value.toLowerCase())
- );
- };
复制代码 userOptions 为初始获取到的全部搜索内容选项,filteredUserOptions为根据搜索栏过滤后返回的选项
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |