vue.js中【v-bind】是用來綁定一個多多個屬性值,或是像一個元件建立props值,【v-bind】有一個對應的語法糖,也就是簡寫方式,利於文法簡潔。
本教學操作環境:windows10系統、vue2.9,本文適用於所有品牌的電腦。
【相關文章推薦:vue.js】
#v-bind的介紹
我們在前面學習的指令主要作用是將值插入到我們模板的內容當中。
但是,除了內容需要動態來決定外,某些屬性我們也希望動態來綁定。
例如動態綁定a元素的href屬性
#例如動態綁定img元素的src屬性
這個時候,我們可以使用v-bind指定:
作用:動態綁定屬性
#v-bind基礎
v-bind用於綁定一個多多個屬性值,或像一個元件創建props值(這個我們在學到元件時再介紹)在開發中,有哪些屬性需要進行動態綁定呢? 例如圖片的連結(src)、網站的連結(href)、動態綁定一些類別(class)、樣式(style)等等例如透過Vue實例中的data綁定定元素的src和href,程式碼如下<div id="app"> <a v-bind:href="link">Vuejs官网</a> <img v-bind:src="logoUrl" alt=""/> <!-- 当然也可以通过语法糖“:”缩写v-bind --> <!-- <img :src="logoUrl" alt=""/> --> </div> <script src="/vue.js"></script> <script> let app = new Vue({ el:"#app", data:{ logoUrl:"http://vuejs.org/images/logo.png", link:"https://vuejs.org" } }) </script>
v-bind語法糖
v-bind有一個對應的語法糖,也就是簡寫方式在開發中,我們通常會使用語法糖的形式,因為這樣比較簡潔。 簡寫方式如下:
<div id="app"> <a :href="link">Vuejs官网</a> <img :src="logoUrl" alt=""/> </div>
v-bind 綁定class
很多時候,我們希望動態的來切換class,例如:物件語法的意思是:class後面跟著物件。
物件語法有下面這些用法:用法一:直接通过{}绑定一个类 <h2 :class="{active:isActive}">Hello world</h2> 用法二:也可以通过判断,传入多个值 <h2 :class="{active:isActive,line:isLine}">Hello world</2> 用法三:和普通的类同时存在,并不冲突 注:如果isActive和IsLine都为true,那么会有title/active/line三个类 <h2 class="title" :class="{active:isActive,line:isLine}">Hello world</h2> 用法四:如果过于复杂,可以放在一个methods或者computed中 注:classes是一个计算属性 <h2 class="title" :class="classes">Hello world</h2>
... <style> .active{ color:red; } </style ... <div id="app"> <h1 v-bind:class="{active:isActive}">{{message}}</h1> <button v-on:click="buttonClick()">颜色切换</button> </div> <script> const vue = new Vue({ el: '#app', data: { message: 'hello world', isActive:true }, methods:{ buttonClick:function(){ this.isActive = !this.isActive; } } }) </script>
陣列語法的意思是:class後面接的是一個數組。
陣列語法有以下這些用法(陣列語法一般用的比較少):用法一:直接通过[]绑定一个类 <h2 :class="[active]">Hello world</h2> 用法二:也可以传入多个值 <h2 :class="[active,line]">Hello world</2> 用法三:和普通的类同时存在,并不冲突 注:会有title/active/line三个类 <h2 class="title" :class="[active,line]">Hello world</h2> 用法四:如果过于复杂,可以放在一个methods或者computed中 注:classes是一个计算属性 <h2 class="title" :class="classes">Hello world</h2>
Demo:
... <style> .active{ color: red; } .line{ font-size: 50px; } .common{ color:green; } </style> ... <div id="app"> <!-- 如果加了单引号用的就是style中的指定class,如果没有单引号用的就是vue对象中的active变量 --> <!-- 注:这里,下面三个类将共存--> <h2 class="common" :class="['active',line]">Hello world</h2> </div> <script> const vue = new Vue({ el: '#app', data: { line:'line' } }) </script>
# v-bind綁定style
我們可以利用v-bind:style來綁定一些CSS內聯樣式在寫CSS屬性名的時候,例如font-size物件語法的意義就是style後面跟的是一個物件類型
<!-- 对象key是CSS属性名称 --> <!-- 对象value是具体赋的值,值可以来自于data中的属性 --> :style="{coloc:currentColor,fontsize:fontsize+'px'}"
陣列語法的意思就是style後面跟著的是一個陣列類型
<!-- 多个值以,分割即可--> <div v-bind:style="[baseStyles,overridingStyles]"></div>
Demo:
<div id="app"> <!-- 通过对象绑定style行内样式,值如果为字符串,那么将直接显示样式值 --> <!-- <h1 :style="{color:'red'}">{{message}}</h1> --> <!-- 通过变量来绑定行内样式表 --> <!-- <h1 :style="{color:color}">{{message}}</h1> --> <!-- 通过方法来绑定样式 --> <!-- <h1 :style="getStyle()">{{message}}</h1> --> <!-- 通过数组来绑定样式 --> <h1 :style="[common,bgColor]">{{message}}</h1> </div> <script type="text/javascript"> const vue = new Vue({ el: "#app", data: { message: "hello world", color: 'red', common:{color:'blue',fontSize:'10px'}, bgColor:{backgroundColor:'black'} }, methods: { getStyle: function() { return { color: this.color }; } } }) </script>
相關免費學習推薦:javascript(影片)
以上是vue.js中v-bind是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!