溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

vue.js中v-bind有什么用

發(fā)布時(shí)間:2020-12-11 10:05:15 來(lái)源:億速云 閱讀:248 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下vue.js中v-bind有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

vue.js中【v-bind】是用于綁定一個(gè)多多個(gè)屬性值,或者像一個(gè)組件創(chuàng)建props值,【v-bind】有一個(gè)對(duì)應(yīng)的語(yǔ)法糖,也就是簡(jiǎn)寫(xiě)方式,利于語(yǔ)法簡(jiǎn)潔。

v-bind的介紹

前面我們學(xué)習(xí)的指令主要作用是將值插入到我們模板的內(nèi)容當(dāng)中。

但是,除了內(nèi)容需要?jiǎng)討B(tài)來(lái)決定外,某些屬性我們也希望動(dòng)態(tài)來(lái)綁定。

  • 比如動(dòng)態(tài)綁定a元素的href屬性

  • 比如動(dòng)態(tài)綁定img元素的src屬性

這個(gè)時(shí)候,我們可以使用v-bind指定:

  • 作用:動(dòng)態(tài)綁定屬性

  • 縮寫(xiě)::

  • 預(yù)期:any(with argument) | object (whitout argument)

  • 參數(shù):attrOrProp(option)

v-bind基礎(chǔ)

v-bind用于綁定一個(gè)多多個(gè)屬性值,或者像一個(gè)組件創(chuàng)建props值(這個(gè)我們?cè)趯W(xué)到組件時(shí)再介紹)

在開(kāi)發(fā)中,有哪些屬性需要進(jìn)行動(dòng)態(tài)綁定呢?

比如圖片的鏈接(src)、網(wǎng)站的鏈接(href)、動(dòng)態(tài)綁定一些類(lèi)(class)、樣式(style)等等

比如通過(guò)Vue實(shí)例中的data綁定元素的src和href,代碼如下

<div id="app">
    <a v-bind:href="link">Vuejs官網(wǎng)</a>
    <img v-bind:src="logoUrl" alt=""/>
    
    <!-- 當(dāng)然也可以通過(guò)語(yǔ)法糖“:”縮寫(xiě)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語(yǔ)法糖

v-bind有一個(gè)對(duì)應(yīng)的語(yǔ)法糖,也就是簡(jiǎn)寫(xiě)方式

在開(kāi)發(fā)中,我們通常會(huì)使用語(yǔ)法糖的形式,因?yàn)檫@樣更加簡(jiǎn)潔。

簡(jiǎn)寫(xiě)方式如下:

<div id="app">
    <a :href="link">Vuejs官網(wǎng)</a>
    <img :src="logoUrl" alt=""/>
</div>

v-bind 綁定class

很多時(shí)候,我們希望動(dòng)態(tài)的來(lái)切換class,比如:

  • 當(dāng)數(shù)據(jù)為某個(gè)狀態(tài)時(shí),字體顯示紅色。

  • 當(dāng)數(shù)據(jù)為另一個(gè)狀態(tài)時(shí),字體顯示黑色。

綁定class有兩種方式:

  • 對(duì)象語(yǔ)法

  • 數(shù)組語(yǔ)法

對(duì)象語(yǔ)法的含義是:class后面跟一個(gè)對(duì)象。

對(duì)象語(yǔ)法有下面這些用法:

用法一:直接通過(guò){}綁定一個(gè)類(lèi)
<h3 :class="{active:isActive}">Hello world</h3>
用法二:也可以通過(guò)判斷,傳入多個(gè)值
<h3 :class="{active:isActive,line:isLine}">Hello world</2>  
用法三:和普通的類(lèi)同時(shí)存在,并不沖突
注:如果isActive和IsLine都為true,那么會(huì)有title/active/line三個(gè)類(lèi)
<h3 class="title" :class="{active:isActive,line:isLine}">Hello world</h3>
用法四:如果過(guò)于復(fù)雜,可以放在一個(gè)methods或者computed中
注:classes是一個(gè)計(jì)算屬性
<h3 class="title" :class="classes">Hello world</h3>

Demo:點(diǎn)擊按鈕切換字體顏色

...
<style>
    .active{
        color:red;
    }    
</style
...
<div id="app">
<h2 v-bind:class="{active:isActive}">{{message}}</h2>
<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>

數(shù)組語(yǔ)法的含義是:class后跟的是一個(gè)數(shù)組。

數(shù)組語(yǔ)法有下面這些用法(數(shù)組語(yǔ)法一般用的比較少):

用法一:直接通過(guò)[]綁定一個(gè)類(lèi)
<h3 :class="[active]">Hello world</h3>
用法二:也可以傳入多個(gè)值
<h3 :class="[active,line]">Hello world</2>
用法三:和普通的類(lèi)同時(shí)存在,并不沖突
注:會(huì)有title/active/line三個(gè)類(lèi)
<h3 class="title" :class="[active,line]">Hello world</h3>
用法四:如果過(guò)于復(fù)雜,可以放在一個(gè)methods或者computed中
注:classes是一個(gè)計(jì)算屬性
<h3 class="title" :class="classes">Hello world</h3>

Demo:

... 
<style>
.active{
color: red;
}
.line{
font-size: 50px;
}
.common{
color:green;
}
</style>
...
<div id="app">
    <!-- 如果加了單引號(hào)用的就是style中的指定class,如果沒(méi)有單引號(hào)用的就是vue對(duì)象中的active變量 -->
    <!-- 注:這里,下面三個(gè)類(lèi)將共存-->
<h3 class="common" :class="['active',line]">Hello world</h3>
</div>
<script>
const vue = new Vue({
el: '#app',
data: {
line:'line'
}
})
</script>

v-bind綁定style

我們可以利用v-bind:style來(lái)綁定一些CSS內(nèi)聯(lián)樣式

在寫(xiě)CSS屬性名的時(shí)候,比如font-size

  • 我們可以使用駝峰式(cameCase):fontSize

  • 或短橫線(xiàn)分隔(kebab-case,記得用單引號(hào)括起來(lái))'font-size'

綁定class有兩種方式:

  • 對(duì)象語(yǔ)法

  • 數(shù)組語(yǔ)法

對(duì)象語(yǔ)法的含義就是style后面跟的是一個(gè)對(duì)象類(lèi)型

<!-- 對(duì)象key是CSS屬性名稱(chēng) -->
<!-- 對(duì)象value是具體賦的值,值可以來(lái)自于data中的屬性 -->
:style="{coloc:currentColor,fontsize:fontsize+'px'}"

數(shù)組語(yǔ)法的含義就是style后面跟的是一個(gè)數(shù)組類(lèi)型

<!-- 多個(gè)值以,分割即可-->
<div v-bind:style="[baseStyles,overridingStyles]"></div>

Demo:

<div id="app">
<!-- 通過(guò)對(duì)象綁定style行內(nèi)樣式,值如果為字符串,那么將直接顯示樣式值 -->
<!-- <h2 :style="{color:'red'}">{{message}}</h2> -->
<!-- 通過(guò)變量來(lái)綁定行內(nèi)樣式表 -->
<!-- <h2 :style="{color:color}">{{message}}</h2> -->
<!-- 通過(guò)方法來(lái)綁定樣式 -->
<!-- <h2 :style="getStyle()">{{message}}</h2> -->
<!-- 通過(guò)數(shù)組來(lái)綁定樣式 -->
<h2 :style="[common,bgColor]">{{message}}</h2>
</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>

以上是“vue.js中v-bind有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI