vue如何在for循环中设置ref并获取$refs

 更新时间:2022年12月08日 15:42:57   作者:dn...  
众所周知在写循环的时候给循环中的数据定义ref以便再下面直接通过this.$ref.来访问,下面这篇文章主要给大家介绍了关于vue如何在for循环中设置ref并获取$refs的相关资料,需要的朋友可以参考下

一、单循环动态设置ref

1.设置:【:ref=“‘XXX’ + index”】XXX -->自定义ref的名字

2.获取:let ref = eval(‘this.$refs.XXX’ + index)[0]

3.示例:

代码如下所示

<template>
    <div class="ref_test">
        <div v-for="(item, index) in dataList" :key="index" :ref="'refName' + index" @click="clickGetRef(index)">
            <p>{{ item.title }}</p>
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            dataList: [
                {
                    "id": 1,
                    "title": "这是来测试如何获取动态ref的"
                },
                {
                    "id": 2,
                    "title": "第2条数据"
                },
                {
                    "id": 3,
                    "title": "第3条数据"
                },
                {
                    "id": 4,
                    "title": "第4条数据"
                },
            
            ]
        }
    },
    methods: {
        clickGetRef(index) {
            let ref = eval('this.$refs.refName' + index)[0]
            console.log(ref);
        }
    },
}
</script>

<style></style>

二、双循环动态设置ref

1.设置:【:ref=“‘XXX’ + (index+i)”】或者【:ref=“‘XXX’ + id”】

index+i -->两个for循环的索引;

id -->item的唯一标识;

2.获取:

let ref = eval('this.$refs.XXX' + (index + i))[0]
或者
let ref = eval('this.$refs.XXX' + (item.id))[0]

3.示例:

代码如下所示

<template>
    <div>
        <div class="ref_double_test">
            <div v-for="(item, index) in dataLists" :key="index">
                <div class="content" v-for="(sonItem, i) in item.sonList" :key="index + i" @click="clickGetDoubleRef(index, i, sonItem)">
                    <!-- 方式一:用索引的方式,用一个索引可能会重复,为防止重复,则用两个索引【index + i】 -->
                    <div :ref="'refName1' + (index + i)">{{ item.title }}</div> ----
                    <!-- 方式二:用id的方式 -->
                    <div :ref="'refName2' + sonItem.sonId">{{ sonItem.sonContent }}</div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            dataLists: [
                {
                    "id": 1,
                    "title": "第1条数据",
                    "sonList": [
                        { "sonId": 1, "sonContent": "子集第1条数据" },
                        { "sonId": 2, "sonContent": "子集第2条数据" },
                    ]
                },
                {
                    "id": 2,
                    "title": "第2条数据",
                    "sonList": [
                        { "sonId": 11, "sonContent": "子集第11条数据" },
                        { "sonId": 22, "sonContent": "子集第22条数据" },
                    ]
                },
                {
                    "id": 3,
                    "title": "第3条数据",
                    "sonList": [
                        { "sonId": 111, "sonContent": "子集第111条数据" },
                        { "sonId": 222, "sonContent": "子集第222条数据" },
                    ]
                }
            ]
        }
    },
    methods: {
        clickGetDoubleRef(index, i, sonItem) {
            // 方式一
            let ref1 = eval('this.$refs.refName1' + (index + i))[0]
            console.log('ref1', ref1);

            // 方式二
            let ref2 = eval('this.$refs.refName2' + sonItem.sonId)[0]
            console.log('ref2', ref2);
        }
    },
}
</script>

<style>
.ref_test {
    width: 500px;
    height: 100px;
    border: 1px solid gray;
}
.content {
    width: 500px;
    height: 30px;
    display: flex;
    background: rebeccapurple;
    margin-bottom: 10px;
}
</style>

总结

到此这篇关于vue如何在for循环中设置ref并获取$refs的文章就介绍到这了,更多相关vue循环设置ref并获取$refs内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue-cli实现多页面多路由的示例代码

    vue-cli实现多页面多路由的示例代码

    本篇文章主要介绍了vue-cli实现多页面多路由的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • VUE DEMO之模拟登录个人中心页面之间数据传值实例

    VUE DEMO之模拟登录个人中心页面之间数据传值实例

    今天小编就为大家分享一篇VUE DEMO之模拟登录个人中心页面之间数据传值实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • vue实现将自己网站(h5链接)分享到微信中形成小卡片的超详细教程

    vue实现将自己网站(h5链接)分享到微信中形成小卡片的超详细教程

    在微信小程序中,可以很简单的分享一个页面,比微信H5简单多了,下面这篇文章主要给大家介绍了关于vue实现将自己网站(h5链接)分享到微信中形成小卡片的超详细教程,需要的朋友可以参考下
    2023-02-02
  • 茶余饭后聊聊Vue3.0响应式数据那些事儿

    茶余饭后聊聊Vue3.0响应式数据那些事儿

    这篇文章主要介绍了茶余饭后聊聊Vue3.0响应式数据那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Vue中的循环及修改差值表达式的方法

    Vue中的循环及修改差值表达式的方法

    这篇文章主要介绍了Vue中的循环及修改差值表达式的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 巧妙运用v-model实现父子组件传值的方法示例

    巧妙运用v-model实现父子组件传值的方法示例

    这篇文章主要介绍了巧妙运用v-model实现父子组件传值的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • 详解Vue-Cli 异步加载数据的一些注意点

    详解Vue-Cli 异步加载数据的一些注意点

    本篇文章主要介绍了详解Vue-Cli 异步加载数据的一些注意点,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • vue中Axios的封装与API接口的管理详解

    vue中Axios的封装与API接口的管理详解

    这篇文章主要给大家介绍了关于vue中Axios的封装与API接口的管理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • vue3引入highlight.js进行代码高亮的方法实例

    vue3引入highlight.js进行代码高亮的方法实例

    最近忙着开发自己的开发脚手架,在做代码生成器的时候,有个预览功能,需要让代码高亮,下面这篇文章主要给大家介绍了关于vue3引入highlight.js进行代码高亮的相关资料,需要的朋友可以参考下
    2022-04-04
  • 详解如何在Vue3中与后端API进行交互

    详解如何在Vue3中与后端API进行交互

    在现代的 web 应用中,与后端 API 的交互成为了不可或缺的一部分,特别是在 Vue 3 这样的前端框架中,如何高效地进行数据请求,处理响应,本文将带您深入了解在 Vue 3 中如何与后端 API 进行交互,并通过示例代码帮助您快速上手,需要的朋友可以参考下
    2025-01-01

最新评论