属性绑定
双大括号不能再HTML attributes中使用。想要响应式地绑定一个attributte,应该使用v-bind
指令
<script>
export default {
data() {
return {
dynamicClass: "appclass",
dynamicId: "appId",
dynamicTitle: null
}
}
}
</script>
<template>
<div v-bind:id="dynamicId" v-bind:class="dynamicClass" v-bind:title="dynamicTitle">测试</div>
</template>
<style>
.appclass{
color: red;
font-size: 30px;
}
</style>
v-bind
指令指示Vue将元素的id
attribute与组件的dybanucId
属性保持一致。如果绑定的值是null
或者undefined
,那么该attribute将会从渲染的的元素上移除。
简写
因为v-bind
非常常用,我们提供了特定的简写语法:
,即直接将v-bind
省去
<div :id="dynamicId" :class="dynamicClass" :title="dynamicTitle">测试</div>
布尔型attribute
布尔型attribute依据true/false值来决定attribute是否应该存在于该元素上,disabled
就是最常见的例子之一。
<script>
export default {
data() {
return {
dynamicClass: "appclass",
dynamicId: "appId",
dynamicTitle: undefined,
isButtonDisabled: false
}
}
}
</script>
<template>
<div :id="dynamicId" :class="dynamicClass" :title="dynamicTitle">测试</div>
<button :disabled="isButtonDisabled">Button</button>
</template>
<style>
.appclass{
color: red;
font-size: 30px;
}
</style>
动态绑定多个值
如果你有像这样的一个包含多个attribute的JavaScript对象
<script>
export default {
data() {
return {
dynamicClass: "appclass",
dynamicId: "appId",
dynamicTitle: undefined,
isButtonDisabled: false,
objectOfAttrs: {
id: "appId",
class: "appclass"
}
}
}
}
</script>
<template>
<div :id="dynamicId" :class="dynamicClass" :title="dynamicTitle">测试1</div>
<button :disabled="isButtonDisabled">Button</button>
<div v-bind:="objectOfAttrs">测试2</div>
</template>
<style>
.appclass{
color: red;
font-size: 30px;
}
</style>