Vuejs之v-bind介紹


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: '#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
    • 我們可以使用駝峰式(cameCase):fontSize
    • 或短橫線分隔(kebab-case,記得用單引號括起來)'font-size'
  • 綁定class有兩種方式:
    • 對象語法
    • 數組語法

對象語法的含義就是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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM