Vue.js v-bind
v-bind
-
缩写:
:
-
预期:
any (with argument) | Object (without argument)
-
参数:
attrOrProp (optional)
用法
-
动态地绑定一个或多个特性,或一个组件 prop 到表达式。
-
在绑定
class
或style
特性时,支持其它类型的值,如数组或对象。 -
在绑定 prop 时,prop 必须在子组件中声明。可以用修饰符指定不同的绑定类型。
-
没有参数时,可以绑定到一个包含键值对的对象。注意此时
class
和style
绑定不支持数组和对象。
修饰符
修饰符 | 说明 |
---|---|
.prop |
作为一个 DOM property 绑定而不是作为 attribute 绑定。(差别在哪里?) |
.camel |
将 kebab-case 特性名转换为 camelCase. (从 2.1.0 开始支持) |
.sync |
会扩展成一个更新父组件绑定值的 v-on 侦听器。 (2.3.0+) 语法糖 |
示例
绑定普通属性
<!-- 绑定一个属性 -->
<img v-bind:src="imageSrc">
<!-- 缩写 -->
<img :src="imageSrc">
动态特性名
<!-- 动态特性名 (2.6.0+) -->
<button v-bind:[key]="value"></button>
<!-- 动态特性名缩写 (2.6.0+) -->
<button :[key]="value"></button>
内联字符串拼接
<!-- 内联字符串拼接 -->
<img :src="'/path/to/images/' + fileName">
class 绑定
<!-- class 绑定 -->
<div :class="{ red: isRed }"></div>
<div :class="[classA, classB]"></div>
<div :class="[classA, { classB: isB, classC: isC }]">
style 绑定
<!-- style 绑定 -->
<div :style="{ fontSize: size + 'px' }"></div>
<div :style="[styleObjectA, styleObjectB]"></div>
绑定一个有属性的对象
<!-- 绑定一个有属性的对象 -->
<div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>
通过 prop 修饰符绑定 DOM 属性
<!-- 通过 prop 修饰符绑定 DOM 属性 -->
<div v-bind:text-content.prop="text"></div>
prop 绑定
<!-- prop 绑定。“prop”必须在 my-component 中声明。-->
<my-component :prop="someThing"></my-component>
通过 $props 将父组件的 props 一起传给子组件
<!-- 通过 $props 将父组件的 props 一起传给子组件 -->
<child-component v-bind="$props"></child-component>
XLink
<!-- XLink -->
<svg><a :xlink:special="foo"></a></svg>
.camel
.camel
修饰符允许在使用 DOM 模板时将 v-bind
属性名称驼峰化,例如 SVG 的 viewBox
属性:
<svg :view-box.camel="viewBox"></svg>
在使用字符串模板或通过 vue-loader
/vueify
编译时,无需使用 .camel
。
参考
- Class 与 Style 绑定
- 组件 - Props
- 【组件 -
.sync
修饰符】(https://cn.vuejs.org/v2/guide/components-custom-events.html#sync- 修饰符)