uniapp collapse动态生成多个折叠面板手动展开收起(包括uni-ui版)

前言

官方文档没有暴露出相关api,那就看看组件源码。

以下示例均通过 vue-cli 创建的 uni-app h5 项目

uView(1.x)版本

源码

node_modules\uview-ui\components\u-collapse-item\u-collapse-item.vue

这个方法是用来改变折叠面板子组件收起还是展开的,根据改变 isShow 的值来实现

方法

html 复制代码
<block v-for="item in 10">
   <u-collapse :accordion="true" :arrow="false">
      <u-collapse-item :ref="`panel${item}`" :index="item" @change="changeCollapse" title="折叠面板"></u-collapse-item>
   </u-collapse>
</block>
javascript 复制代码
<script>
export default {
	name: '',
	data() {
		return {}
	},

	methods: {
		//监听折叠面板
		changeCollapse(obj) {
            let { index, show } = obj
			this.$nextTick(() => {
				for (let i = 1; i < 11; i++) {
					this.$refs[`panel${i}`][0].isShow = false
				}
			})

			this.$nextTick(() => {
				if (show) {
					this.$refs[`panel${index}`][0].isShow = true
				}
			})
		}
	}
}
</script>

uni-ui版本

源码

node_modules\@dcloudio\uni-ui\lib\uni-collapse-item\uni-collapse-item.vue

这个方法是用来改变折叠面板子组件收起还是展开的,根据改变 isOpen 的值来实现

html 复制代码
<block v-for="item in 10">
   <uni-collapse @change="changeCollapse($event, String(item))" accordion>
      <uni-collapse-item :ref="`panel${item}`" title="折叠面板"></uni-collapse-item>
   </uni-collapse>
</block>
javascript 复制代码
<script>
export default {
	name: '',
	data() {
		return {}
	},

	methods: {
		//监听折叠面板
		changeCollapse(e, index) {
			this.$nextTick(() => {
				for (let i = 1; i < 11; i++) {
					this.$refs[`panel${i}`][0].isOpen = false
				}
			})

			this.$nextTick(() => {
				if (e) {
					this.$refs[`panel${index}`][0].isOpen = true
				}
			})
		}
	}
}
</script>
相关推荐
开心工作室_kaic12 分钟前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿31 分钟前
webWorker基本用法
前端·javascript·vue.js
cy玩具1 小时前
点击评论详情,跳到评论页面,携带对象参数写法:
前端
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
qq_390161772 小时前
防抖函数--应用场景及示例
前端·javascript
John.liu_Test2 小时前
js下载excel示例demo
前端·javascript·excel
Yaml42 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
PleaSure乐事2 小时前
【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案
前端·javascript·react.js·前端框架·webstorm·antdesignpro
哟哟耶耶2 小时前
js-将JavaScript对象或值转换为JSON字符串 JSON.stringify(this.SelectDataListCourse)
前端·javascript·json
getaxiosluo2 小时前
react jsx基本语法,脚手架,父子传参,refs等详解
前端·vue.js·react.js·前端框架·hook·jsx