vue3怎么把v-for里面的值循环到v-show上面并且点击切换其中二个的值,附上完整代码,并且含有script
时间: 2024-02-12 20:08:27 浏览: 106
vue中v-for循环选中点击的元素并对该元素添加样式操作
在 Vue 3 中,可以使用 `v-for` 指令来循环渲染数据,使用 `v-show` 指令来判断元素是否显示,并且可以使用 `@click` 指令来监听元素的点击事件。要将 `v-for` 循环出来的值绑定到 `v-show` 指令上,并且实现点击切换其中二个元素的值,可以使用以下语法:
```
<template>
<div>
<div v-for="(item, index) in items" :key="index">
<div @click="toggleVisible(index)">{{ item.name }}</div>
<div v-show="item.visible">
<div v-if="index === 1">
<input type="text" v-model="item.value">
</div>
<div v-else>
{{ item.content }}
</div>
</div>
</div>
</div>
</template>
<script>
import { reactive } from 'vue'
export default {
setup() {
const items = reactive([
{ name: 'item1', content: 'content1', visible: false },
{ name: 'item2', content: 'content2', value: '', visible: false },
{ name: 'item3', content: 'content3', visible: false },
])
const toggleVisible = (index) => {
items[index].visible = !items[index].visible
if (index === 1) {
items[index].value = ''
}
}
return {
items,
toggleVisible,
}
},
}
</script>
```
在上面的例子中,我们使用 `reactive` 函数创建了一个响应式的 `items` 数组,并在模板中使用 `v-for` 遍历数组中的每个元素。在每个元素中,我们使用 `@click` 指令来监听元素的点击事件,并调用 `toggleVisible` 函数来切换元素的显示和隐藏。在每个元素的下方,我们使用 `v-show` 指令来判断元素是否显示,根据每个元素的 `visible` 属性来控制元素的显示和隐藏。其中,当 `index` 等于 1 时,我们使用 `v-if` 条件指令来渲染一个输入框,并使用 `v-model` 指令将输入框的值绑定到 `item.value` 属性上。
在 `toggleVisible` 函数中,我们判断当前点击的元素是否为第二个元素,如果是,则将 `item.value` 属性清空。
注意,在 Vue 3 中,需要使用 `setup` 函数来组织代码,并且不需要再像 Vue 2 中一样使用 `data` 属性来声明数据。同时,需要将事件监听器从 `methods` 中移到 `setup` 函数中。
阅读全文