企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# v-bind * 缩写:`:` ## 1. 用法: > 动态地绑定一个或多个特性,或一个组件 prop 到表达式。 > 在绑定 class 或 style 特性时,支持其它类型的值,如数组或对象 > 在绑定 prop 时,prop 必须在子组件中声明。可以用修饰符指定不同的绑定类型。 > > 没有参数时,可以绑定到一个包含键值对的对象。注意此时 class 和 style 绑定不支持数组和对象。 ## 2. 示例: ``` var app = new Vue({ el:"#test", data:{mgUrl:"images/01.png", url:"http:www.baidu.com" }, }) ``` ### 2.1 绑定一个属性 ``` <!-- 绑定一个属性 --> <img v-bind:src="imgUrl"> <a v-bind:href="url"></a> <!-- 缩写 --> <img :src="imageSrc"> ``` ### 2.2 内联字符串拼接 ``` //img :src="'/path/to/images/' + fileName" /> <div id="test"> <a v-bind:href="url"></a> <img v-bind:src="'./images/' + '01.png' " alt=""> </div> ``` ## 3 v-bind 中class的用法 ### 3.1class绑定 * 写法 :class={active:istrue} istrue为真添加active > 可以传给 v-bind:class 一个对象,以动态地切换 class: > 此外,v-bind:class 指令也可以与普通的 class 属性共存 ``` <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.15/vue.js"></script> <style> .red{ width: 100px; height: 100px; background: red; } .active{ background: blue; } .fontSize{ font-size: 30px; } </style> ``` ``` <div id="test"> <div class="red" v-bind:class="{ active: blue, fontSize: big }"> 你好</div> </div> <script> var app = new Vue({ el:"#test", data:{ url:"http:www.baidu.com", imgUrl:"images/01.png", blue:true, big:false } }) </script> ``` > 绑定的数据对象不必内联定义在模板里: ``` <div v-bind:class="classObject"></div> data: { classObject: { active: true, fontSize: true } } ``` ### 3.2 绑定数组 ``` <div class="red" v-bind:class="[activeClass, errorClass]">123</div> data: { activeClass: 'active', errorClass: 'fontSize' } ``` 渲染为 ``` <div class=" red active fontSize"></div> ``` #### 3.2.1绑定 三元表达式 > 这样写将`始终`添加 errorClass,但是只有在 `isActive 是 true` 时才添加 activeClass ``` <div v-bind:class="[isActive ? activeClass : '', errorClass]"></div> data:{ isActive:true, activeClass: 'active', errorClass: 'fontSize' } ``` > 当有多个条件 class 时这样写有些繁琐。所以在数组语法中也可以使用对象语法: ``` <div v-bind:class="[{ active: isActive }, errorClass]"></div> ```