对 v-for 中的特定元素使用 v-if
Use v-if for a specific element in a v-for
所以我的 Vue 页面上有以下 HTML
<div v-for="profile in lab.profiles" v-if="edit || profile.active" class="lab-tests-row-div" @mouseover="">
<div class="clickBox" :class="['clickBox-' + lab.id + '-' + profile.id]" @click="openInfoPopup"></div>
<p class="lab-tests-row test-info-row" v-bind:class="{'active': profile.active}">
<span v-bind:class="{'opacity50':!profile.active}">{{profile.name}}</span>
<i v-if="edit" class="fa fa-minus pull-right removeTestIcon" aria-hidden="true" @click="toggleProfile(lab.id, profile.id)"></i>
<span class="pull-right" v-bind:class="{'opacity50':!profile.active}">{{profile.code}}</span>
</p>
</div>
我想在用户将鼠标悬停在该行上时显示元素 'clickBox',如果我使用带有布尔值的 v-if 并在鼠标悬停时更改它,它们都会显示,因为它们位于 v-因为,我如何只在他们悬停的行中显示 div?
在v-for指令中你可以获得元素的索引v-for="(profile, index)
使用该索引仅在模板中显示您想要的样式。
例如。
new Vue({
el: '#app',
data: {
selected : 0
}
})
.selectedClass {
background: lightblue
}
.hoverClass:hover {
background: lightcoral
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<main id="app">
<div v-for="(elem, index) in 4">
<p class="hoverClass" :class="{'selectedClass': selected === index}" @click="selected = index" >{{elem}}</p>
</div>
</main>
https://whosebug.com/posts/54025706/edit#
已编辑
完美结合 class="..."
与 Vue 绑定 :class="..."
已编辑 2
对于嵌套 v-for
为索引声明另一个名称。
new Vue({
el: '#app'
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<main id="app">
<div v-for="(item, i) in 2">
<div v-for="(elem, j) in 3">
v-for item {{ i }} v-for elem {{ j }}
</div>
</div>
</main>
所以我的 Vue 页面上有以下 HTML
<div v-for="profile in lab.profiles" v-if="edit || profile.active" class="lab-tests-row-div" @mouseover="">
<div class="clickBox" :class="['clickBox-' + lab.id + '-' + profile.id]" @click="openInfoPopup"></div>
<p class="lab-tests-row test-info-row" v-bind:class="{'active': profile.active}">
<span v-bind:class="{'opacity50':!profile.active}">{{profile.name}}</span>
<i v-if="edit" class="fa fa-minus pull-right removeTestIcon" aria-hidden="true" @click="toggleProfile(lab.id, profile.id)"></i>
<span class="pull-right" v-bind:class="{'opacity50':!profile.active}">{{profile.code}}</span>
</p>
</div>
我想在用户将鼠标悬停在该行上时显示元素 'clickBox',如果我使用带有布尔值的 v-if 并在鼠标悬停时更改它,它们都会显示,因为它们位于 v-因为,我如何只在他们悬停的行中显示 div?
在v-for指令中你可以获得元素的索引v-for="(profile, index)
使用该索引仅在模板中显示您想要的样式。
例如。
new Vue({
el: '#app',
data: {
selected : 0
}
})
.selectedClass {
background: lightblue
}
.hoverClass:hover {
background: lightcoral
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<main id="app">
<div v-for="(elem, index) in 4">
<p class="hoverClass" :class="{'selectedClass': selected === index}" @click="selected = index" >{{elem}}</p>
</div>
</main>
https://whosebug.com/posts/54025706/edit#
已编辑
完美结合 class="..."
与 Vue 绑定 :class="..."
已编辑 2
对于嵌套 v-for
为索引声明另一个名称。
new Vue({
el: '#app'
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<main id="app">
<div v-for="(item, i) in 2">
<div v-for="(elem, j) in 3">
v-for item {{ i }} v-for elem {{ j }}
</div>
</div>
</main>