uni-app实现多选标签超出7项使用uni-popup

在前端中经常会有多选标签的功能需求本文中使用的是uinapp, 下面是我自己写的一个多选标签分享~~~

先来看看效果图(点击查看更多显示弹出层):

1.html代码(本文中v-for未使用key字段仅供参考): 

<view class="pad-top-1 border-btm">
			<view class="out-1">请选择服务内容(多选)</view>
			<view class="flex">
				<view v-for="item,index in mainList[mainClass].children.slice(0,7)" :class="{'sub-btn':true,'sub-btn-active':chooseMainList.includes(item)}" @click="changeView(item)">{{item}}</view>

				<view class="sub-btn" @click="toggle">查看更多</view>
				<view class="sub-btn">
					<uni-popup type="bottom" ref="popup" backgroundColor="#fff">
						<view class="flex pad-top-1 pad-y-2 check-group">
							<view v-for="val,key in mainList[mainClass].children.slice(7)" :class="{'check-view':true,'sub-btn-active':chooseMainList.includes(val)}"  @click="changeView(val)">
									{{val}}
							</view>
						</view>
					</uni-popup>
				</view>

			</view>
		</view>

2.javascript代码(本文数据为编写的模拟数据没有唯一标识所直接用的内容字段): 

<script>
    export default{
        data(){
            return {
                mainList: [
					{title: '机械改装', children: ['普通机床', '数控机床', '加工中心', '铣床系列', '数控铣床', '钻床系列', '数控钻床', '查看更一', '查看更二', '查看更三', '查看更四', '查看更五', '查看更六', '查看更七']},
					{title: '电器改装', children: ['1普通机床', '1数控机床', '1加工中心', '1铣床系列', '1数控铣床', '1钻床系列', '1数控钻床', '1查看更一', '1查看更二', '1查看更三', '1查看更四', '1查看更五', '1查看更六', '1查看更七']},
					{title: '高级服务', children: ['2普通机床', '2数控机床', '2加工中心', '2铣床系列', '2数控铣床', '2钻床系列', '2数控钻床', '2查看更一', '2查看更二', '2查看更三', '2查看更四', '2查看更五', '2查看更六', '2查看更七']}
				],
                mainClass: 0, // 选中mainList数组中的第几类
                chooseMainList: [] // 存储选择的数据
            }
        },

        methods: {
            changeView(value){
				// 点击多选标签按钮触发此函数
				if(this.chooseMainList.includes(value)){
					// 如果选择的数组中有要删除
					// 1. 先找到该属性在数组的下标
					var indexOf;
					for(let i=0;i<=this.chooseMainList.length;i++){
						if(this.chooseMainList[i]===value){
							indexOf = i
						}
					}
					// 2. 从数组中删除此属性
					this.chooseMainList.splice(indexOf,1)
					console.log('数组含有--删除'+value,this.chooseMainList)
				}else{
					// 如果没有就往数组里添加
					this.chooseMainList.push(value)
					console.log('数组没有--添加'+value,this.chooseMainList)
				}
			}
        }
    }
</script>

css代码我就不复制了大家可以自己去写~~~

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Uniapp多选下拉框的使用步骤如下: Step 1:打开链接,获取插件。该插件是完全仿照微信原生效果,简单美观可扩展。 Step 2:在要使用的页面中,使用以下代码来调用多选下拉框组件: <multiple-picker title="工作人员" :show="userSelectMultiple" :columns="userList" :defaultIndex="selectIndex" @confirm="confirmMultiple" @cancel="userSelectMultiple = false"></multiple-picker> 这个代码会在页面上生成一个多选下拉框,标题为“工作人员”,显示的选列表为用户列表,初始选择的索引为selectIndex。 Step 3:在获取到人员列表后,将列表中的键名进行替换(将'nickName'替换为'label',将'userId'替换为'value'),然后打开多选框。具体代码如下: chooseUser() { getWorkerList().then((res) => { this.userList = res.data; let newArr = [] this.userList.map(item => { let _item = JSON.parse(JSON.stringify(item).replace('nickName','label').replace('userId', 'value')); newArr.push(_item) }) this.userList = newArr this.userSelectMultiple = true }); } 通过调用chooseUser方法,可以获取到用户列表,并进行键名的替换,最后打开多选框。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [uni-app中下拉框多选](https://blog.csdn.net/Achong999/article/details/130501168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值