操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attribute,所以我们可以用 v-bind
处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将 v-bind
用于 class
和 style
时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。
我们可以传给 v-bind:class
一个对象,以动态地切换 class:
<div v-bind:class="{ active: isActive }"></div> 或者直接写类名 <div v-bind:class="obj"></div> <script> obj{ active: isActive } </script>
<div :class="ischange?'red':'green'">三元表达式改变颜色</div>
<div class="box" :class="[border,{bgClor:isColor}]">class绑定--数组语法写法二</div> border: "border", isColor: true,
v-bind:style
的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS property 名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名:
<div :style="{ background: "red", fontSize: "30px", color: "#fff" }">style绑定</div> 或者直接写对象名 <div :style="styObj">style绑定</div> styObj: { background: "red", fontSize: "30px", color: "#fff" },
注意属性名称
<div :style="styArr">style绑定--数组</div> styArr: [ { "background": "red" }, { "color": "blue" } ]
目的 | 执行次数 | return是否必须 | 是否依赖缓存 | |
---|---|---|---|---|
计算属性 | 计算结果 | 依赖缓存,计算过的属性不再计算,执行一次 | 必须 | 依赖 |
函数 | 事件处理 | 调用几次,执行几次,没有缓存 | 不是必须 | 不依赖 |