小程序中vue for循环出来的数据变成折叠面板

news/2024/7/10 0:47:06 标签: 折叠面板, 小程序, uniapp, javascript, vue

在我们制作移动端折叠面板的时候,可以按照ref的方式获取高度来调节,但是我们在写小程序的时候,要按照小程序的api来获取修改高度,以下为完整的折叠面板代码,可以实现自动识别高度,是否折叠

v-for里面写

javascript">class="changeBox" :style="{'height':flag[index] ? heightArr[index] < staticHeight ? heightArr[index] + 'px' : staticHeight + 'px': heightArr[index] +'px'}"

两个折叠按钮

<view
    class="bottom-arw"
    @click="showContent(index)"
    v-if="flag[index] && heightArr[index] > staticHeight"
>展开﹀</view>
<view
    class="bottom-arw"
    @click="showContent(index)"
    v-if="!flag[index] && heightArr[index] > staticHeight"
>收起︿</view>

data数据

javascript">data() {
    return {
        flag: [],
        staticHeight: 140,
        heightArr: [],
    }
},

js部分

javascript">onLoad(query) {
    this.getData()
},
//方法
methods: {
    getData() {
        // 自己请求数据来循环列表
        this.setHeight()
    },
    showContent(index) {
        var f = (this.flag[index] = !this.flag[index])
        this.$set(this.flag, index, f)
    },
    setHeight() {
        this.$nextTick(() => {
            // 页面渲染完成后的回调
            const query = uni.createSelectorQuery().in(this)
            let nodesRef = query.selectAll(".changeBox")
            nodesRef
                .boundingClientRect(rek => {
                    if (!rek || !rek.length) {
                        this.isEmpty = true
                        return
                    }
                    rek.map((item, index) => {
                        this.heightArr.push(item.height)
                        this.$set(this.flag, index, true)
                    })
                })
                .exec()
        })
    }
}

大家可以按照自己的喜好自行修改


http://www.niftyadmin.cn/n/1466630.html

相关文章

安卓、ios时间转换成时间戳的形式

将日期转换成时间戳的形式&#xff0c;在安卓和ios不同的系统下转正会有兼容性的问题 安卓系统下 Date.parse(new Date(2018-03-30 12:00:00)) 会直接转换成时间戳的形式&#xff08;简单说就是整数形式&#xff09;ios系统下 Date.parse(new Date(2018-03-30 12:00:00)) sorr…

网页设计js 判断数据是否为空

// var a ""; // var a " "; // var a null; // var a undefined; // var a []; // var a {}; // var a NaN;if(a undefined) { // 只能用 运算来测试某个值是否是未定义的console.log("为undefined");}if(a nul…

export 'default' (imported as '...') was not found in ''...错误处理

开发中遇到的一个简单问题 却花了我很长时间 //在一个js文件中导出fetch请求方法 import fetch from utils/fetch;export function getCompanyList() {return fetch({url: /wx/company/list,method: get}) } //在vue的script代码块中导出 import getCompanyList from api/recr…

VUE模仿百度搜索框,按上下方向键及回车键实现搜索选中效果

逻辑介绍&#xff1a;1、表单获取焦点时&#xff0c;显示搜索建议框2、输入内容时&#xff0c;请求后台接口&#xff0c;并将返回的数据展示在搜索建议框内3、表单获取焦点情况下&#xff0c;按键盘上下箭头可实现搜索列表项的切换&#xff0c;按回车可以选择当前激活的选项并获…

基于vue+iview实现省市区三级联动

表单关键代码 <FormItem prop"province" label"省份"><Select v-model"formValidate.province" placeholder"请选择省份" on-change"changeProvince"><Option v-for"(item,index) in provinceArr"…

JavaScript中将iso8859-1的字符转换成中文

var str “\u0088\u0088\u0091\u00AD\u009B”; var utfstring decodeURI(escape(str)) 是用escape把iso8859-1的字符进行编码&#xff0c;然后再调用decodeURI按照utf8的方式进行解码。 当然上面的编码会把符号也会转义&#xff0c;这个时候只需按照下面的改下就可以了 var …

网站前端如何实现HTML转PDF下载的两种方式

将HTML页面转化为PDF下载是前端经常会遇到的需求&#xff0c;下面就列举两种方式进行实现。以下两种方式默认都是在Vue项目环境下&#xff0c;其他框架项目自行灵活运用。 方式一&#xff1a;使用html2canvas和jspdf插件实现 该方式是通过html2canvas将HTML页面转换成图片&…

在vue中阻止click事件冒泡,防止触发冒泡另一个事件

使用vue阻止子级元素的click事件冒泡&#xff0c;很简单&#xff0c;用stop <div click"test1()"><span click.stop"test2()">按钮1</span><span>按钮2</span> </div> 这样点击div里面的按钮1&#xff0c;就不会触发…