假如我们想动态的修改页面元素的属性,比如class属性,这样写是错误的:

<div class="{{isAcctive}}"></div>	

因为插值表达式不能用在属性的值中。

Vue对class属性进行了特殊处理,可以接收数组或对象格式:

数组语法

我们可以借助于v-bind指令来实现:

HTML:

<div v-bind:class="isActive"></div>

你的data属性:

data:{
    isActive:['active','hasError']
}

渲染后的效果:

<div class="active hasError"></div>
对象语法

我们可以传给 v-bind:class 一个对象,以动态地切换 class:

<div v-bind:class="{ active: isActive }"></div>

上面的语法表示 active 这个 class 存在与否将取决于数据属性 isActive 的 truthiness。

你可以在对象中传入更多属性来动态切换多个 class。此外,v-bind:class 指令也可以与普通的 class 属性共存。当有如下模板:

<div class="static"
     v-bind:class="{ active: isActive, 'text-danger': hasError }">
</div>

和如下 data:

data: {
  isActive: true,
  hasError: false
}

结果渲染为:

<div class="static active"></div>

当 isActive 或者 hasError 变化时,class 列表将相应地更新。例如,如果 hasError的值为 true,class 列表将变为 “static active text-danger”。

简写
v-bind:class可以简写为:class

Logo

前往低代码交流专区

更多推荐