- 动态地绑定一个或多个特性(此处的特性是指行间样式的属性)
:后的为传递的参数
<section id="app">
<!-- 绑定一个属性 -->
<img v-bind:src="imageSrc">
<!-- 动态特性名 (2.6.0+) -->
<button v-bind:[key]="value"></button>
<!-- 缩写 -->
<img :src="imageSrc">
<!-- 动态特性名缩写 (2.6.0+) -->
<button :[key]="value"></button>
<!-- 内联字符串拼接 -->
<img :src="'https:' + fileName">
</section>
<script>
const vm = new Vue({
el: "#app",
data: {
imageSrc:'https://dss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3363295869,2467511306&fm=26&gp=0.jpg',
key:'a',
fileName:'//dss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3363295869,2467511306&fm=26&gp=0.jpg',
value:'123'
}
});
</script>
v-bind的无参数,且绑定一个对象,键值对为特性
<div v-bind="{naem:key,age:'18',height:'163cm', class:'zzz'}"></div>
绑定class
对象语法
<div :class='{red:true}'></div>
当为false
使用对象绑定class时当value为真时key才被添加为类名
可以使用<section id="app">
<div :class='{red:classA}'></div>
</section>
<script>
const vm = new Vue({
el: "#app",
data: {
classA:true,
}
});
</script>
数组语法
我们可以把一个数组传给 v-bind:class,以应用一个 class 列表
<div v-bind:class="[classA, classB]"></div>
在数组语法总可以使用三元表达式来切换class
<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>
在数组语法中可以使用对象语法
<div v-bind:class="[classA, { classB: isB, classC: isC }]">
<div v-bind:class="classA" class="red">
v-bind:class 可以与普通 class 共存
<div v-bind:class="classA" class="red">
绑定style
看着比较像CSS,但其实是一个JavaScript对象
CSS属性名可以用驼峰式(camelCase)或者短横线分隔(kebab-case)来命名
但是使用短横线分隔时,要用引号括起来
使用对象语法
<div v-bind:style="{ fontSize: size + 'px' }">123</div>
<div v-bind:style="{ 'font-size': size + 'px' }">123</div>
data: {
size: 30
}
也可以直接绑定一个样式对象,这样模板会更清晰:
<div v-bind:style="styleObject"></div>
data: {
styleObject: {
fontSize: '13px'
}
}
使用数组语法
数组语法可以将多个样式对象应用到同一个元素
<section id="app">
<div v-bind:style="[styleA,styleB]">123456</div>
</section>
<script>
const vm = new Vue({
el: "#app",
data: {
styleA:{
color:'red',
'font-size': '30px',
},
styleB:{
width:'100px',
height:'100px',
background:'blue'
}
}
});
</script>
- 自动添加前缀
绑定style时,使用需要添加浏览器引擎前缀的CSS属性时,如 transform,Vue.js会自动侦测并添加相应的前缀。 多重值
从 2.3.0 起你可以为 style 绑定中的属性提供一个包含多个值的数组,常用于提供多个带前缀的值:<div v-bind:style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>
这样写只会渲染数组中最后一个被浏览器支持的值。在本例中,如果浏览器支持不带浏览器前缀的 flexbox,那么就只会渲染 display: flex。
修饰符:
修饰符 (modifier) 是以英文句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。.camel
由于绑定特性时,会将大写字母转换为小写字母,如:<!-- 最终渲染的结果为:<svg viewbox="0 0 100 100"></svg> -->
<svg :viewBox="viewBox"></svg>
所以,Vue提供了v-bind修饰符 camel,该修饰符允许在使用 DOM 模板时将 v-bind 属性名称驼峰化,例如 SVG 的 viewBox 属性<svg :view-box.camel="viewBox"></svg>
.prop
被用于绑定 DOM 属性 (property)
<div v-bind:text-content.prop="text"></div>
- .sync
讲解组件时再说
传递一个对象的所有属性
如果你想要将一个对象的所有属性都作为 prop 传入,你可以使用不带参数的 v-bind 。例如,对于一个给定的对象 person:
person: {
name: 'shanshan',
age: 18
}
传递全部属性:
<my-component v-bind="person"></my-component>
上述代码等价于:
<my-component
:name="person.name"
:age="person.age"
></my-component>