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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值