Vue.js 2属性值绑定v-bind

时间:2021-12-27 16:15:52

语法:

v-bind指令用于动态绑定值给属性,它的值可以是数组,对象以及表达式

基本使用

<!-- 绑定一个属性 -->
<img v-bind:src="imageSrc">
<!-- 缩写 -->
<img :src="imageSrc">
<!-- 内联字符串拼接 -->
<img :src="'/path/to/images/' + fileName">

.camel修饰符(2.1.0+)

.camel 允许v-bind 属性以驼峰式命名,例如 SVG 的 viewBox 属性:

<svg :view-box.camel="viewBox"></svg>

绑定prop属性

prop属性一定要在组件的props里定义。

<my-component :prop="someThing"></my-component>


Class绑定

class绑定其中一个目的是为了动态改变元素的样式。

1、绑定对象表达式

<div :class="{ active: isActive }"></div>

isActive为true,添加class active,否则删除class active。

2、多个class

<div class="myclass" :class="{ active: isActive, 'text-danger': hasError }"></div>

在组件的data设置isActive和hasError的值:

data: {
isActive: true,
hasError: false
}

3、绑定到计算属性

<div :class="classObject"></div>
data: {
isActive: true,
error: null
},
computed: {
classObject: function () {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}

4、数组语法

<div :class="[activeClass, errorClass]"></div>
data: {
activeClass: 'active',
errorClass: 'text-danger'
}

在数组里的元素可以是三元表达式,或者对象:

<div :class="[isActive ? activeClass : '', errorClass]"></div>
<div :class="[{ active: isActive }, errorClass]"></div>

Style绑定

语法v-bind:style,缩写:style,它的值是一个javascript的object对象。

CSS属性名:可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case),短横线分割的需要使用单引号括起来。

基本使用

<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: {
activeColor: 'red',
fontSize: 30
}

直接绑定到对象变量

<div v-bind:style="styleObject"></div>
data: {
styleObject: {
color: 'red',
fontSize: '13px'
}
}

数组语法

可以对样式以数组的方式赋值多个样式对象。

<div v-bind:style="[baseStyles, overridingStyles]"></div>

自动添加前缀

当v-bind:style 使用需要添加浏览器引擎前缀的 CSS 属性时,如 transform,Vue.js 会自动侦测并添加相应的前缀。