使用 JavaScript 表达式
最基本的数据绑定形式是文本插值,它使用的是“Mustache”语法 (即双大括号):
vue
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
<div :id="`list-${id}`"></div>
<time :title="toTitleDate(date)" :datetime="date">
{{ formatDate(date) }}
</time>双大括号标签会被替换为相应组件实例中 msg 属性的值。同时每次 msg 属性更改时它也会同步更新。
Attribute 绑定
双大括号不能在 HTML attributes 中使用。想要响应式地绑定一个 attribute,应该使用 v-bind 指令:
vue
<div v-bind:id="dynamicId"></div>v-bind 指令指示 Vue 将元素的 id attribute 与组件的 dynamicId 属性保持一致。如果绑定的值是 null 或者 undefined ,那么该 attribute 将会从渲染的元素上移除。
另一个例子是 v-on 指令,它将监听 DOM 事件:
<a v-on:click="doSomething"> ... </a>
<!-- 简写 -->
<a @click="doSomething"> ... </a>这里的参数是要监听的事件名称:click。v-on 有一个相应的缩写,即 @ 字符。
简写
vue
<div :id="dynamicId"></div>同名简写
如果 attribute 的名称与绑定的 JavaScript 值的名称相同,那么可以进一步简化语法,省略 attribute 值:
vue
<div :id></div>这与在 JavaScript 中声明对象时使用的属性简写语法类似。请注意,这是一个只在 Vue 3.4 及以上版本中可用的特性。
动态参数
同样在指令参数上也可以使用一个 JavaScript 表达式,需要包含在一对方括号内
vue
<a :[attributeName]="url"> ... </a>相似地,你还可以将一个函数绑定到动态的事件名称上:
vue
<a @[eventName]="doSomething"> ... </a>