如何在VueJs对象迭代中有条件地应用CSS类?

时间:2018-09-20 17:14:23

标签: javascript jquery css vue.js vuetify.js

Vuetify中的代码:

<v-layout row wrap> 
     <v-flex xs2 v-for="(month, key) in months" :key ="key">
          <router-link class = "decoration" :to="month.target">{{(month.month)}}</router-link>
     </v-flex> 

“ v-for”正在array的{​​{1}}中进行迭代,它们具有不同的属性:

objects

如何在第一个代码块中有条件地应用类data () { return { months: [ { month: 'Gen', target: '' }, { month: 'Feb', target: '' }, and so on. ,以便只能在下个月加上下划线?

提前谢谢!

4 个答案:

答案 0 :(得分:2)

只需使用:class = '[{"className": X}]'。注意类属性前的:

在哪里, X是vue组件中的Boolean计算属性/数据属性。 True将添加类,而False将不会添加。
className是您的CSS类名。

答案 1 :(得分:0)

我相信您可以执行以下操作:

<router-link :class="{'underlined': month.shouldUnderline}" :to="month.target">{{(month.month)}}</router-link>

让我知道是否可行!

编辑:此处有更多信息(还提到了多个类):https://vuejs.org/v2/guide/class-and-style.html

答案 2 :(得分:0)

虽然其他两个答案都是正确的,但如果我理解正确,那么您就需要这两个类-固定类和动态类。

您可以通过执行以下操作来实现此目的:

<router-link class="decoration" :class="{ underlined: CONDITION }" :to="month.target">{{(month.month)}}</router-link>

您可以在方法上轻松设置此条件:

methods: {
   isUnderlined() { return SOME IF STATMENT OR SOMETHING }
}

不要像其他答案状态那样用括号[]包裹:class,因为它期望对象{}

答案 3 :(得分:0)

您可以这样做:

<td :class="props.item[3] == 'pawned' ? 'text-red' : ''">{{ props.item[2] }}</td>