首頁 > web前端 > Vue.js > vue.js中v-bind是什麼意思

vue.js中v-bind是什麼意思

coldplay.xixi
發布: 2020-11-30 13:52:46
原創
14567 人瀏覽過

vue.js中【v-bind】是用來綁定一個多多個屬性值,或是像一個元件建立props值,【v-bind】有一個對應的語法糖,也就是簡寫方式,利於文法簡潔。

vue.js中v-bind是什麼意思

本教學操作環境:windows10系統、vue2.9,本文適用於所有品牌的電腦。

【相關文章推薦:vue.js

#v-bind的介紹

我們在前面學習的指令主要作用是將值插入到我們模板的內容當中。

但是,除了內容需要動態來決定外,某些屬性我們也希望動態來綁定。

  • 例如動態綁定a元素的href屬性

  • #例如動態綁定img元素的src屬性

這個時候,我們可以使用v-bind指定:

  • 作用:動態綁定屬性

  • ##縮寫::

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

  • 參數:attrOrProp(option)

#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有兩種方式:

  • 物件語法

  • 陣列語法

物件語法的意思是: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>
登入後複製

Demo:點擊按鈕切換字體顏色

...
<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: &#39;#app&#39;,
data: {
message: &#39;hello world&#39;,
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="[&#39;active&#39;,line]">Hello world</h2>
</div>
<script>
const vue = new Vue({
el: &#39;#app&#39;,
data: {
line:&#39;line&#39;
}
})
</script>
登入後複製

# v-bind綁定style

我們可以利用v-bind:style來綁定一些CSS內聯樣式

在寫CSS屬性名的時候,例如font-size

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

  • 或短橫線分隔(kebab-case,記得用單引號括起來) 'font-size'

綁定class有兩種方式:

  • #物件語法

  • 陣列語法

物件語法的意義就是style後面跟的是一個物件類型

<!-- 对象key是CSS属性名称 -->
<!-- 对象value是具体赋的值,值可以来自于data中的属性 -->
:style="{coloc:currentColor,fontsize:fontsize+&#39;px&#39;}"
登入後複製

陣列語法的意思就是style後面跟著的是一個陣列類型

<!-- 多个值以,分割即可-->
<div v-bind:style="[baseStyles,overridingStyles]"></div>
登入後複製

Demo:

<div id="app">
<!-- 通过对象绑定style行内样式,值如果为字符串,那么将直接显示样式值 -->
<!-- <h1 :style="{color:&#39;red&#39;}">{{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: &#39;red&#39;,
common:{color:&#39;blue&#39;,fontSize:&#39;10px&#39;},
bgColor:{backgroundColor:&#39;black&#39;}
},
methods: {
getStyle: function() {
return {
color: this.color
};
}
}
})
</script>
登入後複製

相關免費學習推薦:

javascript(影片)

以上是vue.js中v-bind是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板