属性绑定
v-bind
双大括号不能在 HTML 属性上使用。想要响应式地绑定一个 HTML属性,应该使用 v-bind 指令:
vue
<!-- 正确的写法 -->
<div v-bind:id="xxx"></div>
<!-- 错误的写法 -->
<div id={{ xxx }}></div>v-bind 指令指示 Vue 将元素的id属性与定义的xxx状态保持一致。如果绑定的值是null或者undefined,那么该attribute将会从渲染的元素上移除。
我们使用下面的代码编写页面,观察页面元素效果
vue
<template>
<div>
<div v-bind:id="xxx">F12审查页面元素</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
const xxx = ref('123456');
</script>
可以看到xxx状态的值123456已经成功赋值给页面元素的id,若是我们将xxx的值设置为null或者undefined,元素上将不会再有id属性

简写
因为 v-bind 非常常用,vue提供了特定的简写语法:
vue
<!-- 绑定变量 -->
<div :id="xxx"></div>
<!-- 绑定函数 -->
<div :id="getID"></div>
<!-- 使用js表达式 -->
<div :id="true?'123':'456'"></div>动态绑定多个值
我们未来的写法都将使用简写语法,但也有一些例外,假设我们有像这样的一个包含多个属性的js对象:
js
const objectOfAttrs = {
id: 'container',
class: 'wrapper'
}此时我们就可以通过不带参数的v-bind,将它们批量绑定到单个元素上:
vue
<div v-bind="objectOfAttrs"></div>上面的写法等价于
vue
<div :id="objectOfAttrs.id" :class="objectOfAttrs.class"></div>