问题描述
我是 Vue 的新手,我遇到了一个问题。 我有一个对象数组,我希望循环的包装器具有动态 className 例如
<div v-for="({time,date,name},i) in myObject" :key="i" class="my-custom-class">
好吧,如果键 (i) 大于 3,那么我希望 className 具有不同的名称 或者至少添加一个额外的名称(如 hiddenDiv)。
我知道不可能在 v-for 语句中添加 v-if 条件。 任何帮助表示赞赏。
解决方法
您可以使用基于当前循环索引 :class="{'hide-div':i>3}"
的条件绑定类:
<div v-for="({time,date,name},i) in myObject"
:key="i" :class="{'hide-div':i>3}" class="my-custom-class" >
,
另一种使用计算属性的方法...
<div v-for="({time,i) in myObject"
:key="i" :class="getClassName(i)" class="my-custom-class" >
并在您的计算中
computed: {
getClassName() {
return i => {
if(i === 0) return 'classOne';
elseif(i === 1) return 'classTwo'
else return 'classThree';
// In this way you can maintain as many classNames you want based on the condition
}
}
}
,
如果你想在 vue 中应用动态类,那么你可以使用类绑定来将特定的类应用到元素上。
您可以阅读有关类和样式绑定的信息 here。
此外,您可以为类定义一个方法,并应用一些需要更改类的条件。