1. 程式人生 > >vue的基礎指令

vue的基礎指令

vue的介紹

1.定義

在這裡插入圖片描述

2.MVC和MVVM的概念

  • MVC 是後端的分層開發概念;
  • MVVM是前端檢視層的概念,主要關注於 檢視層分離,也就是說:MVVM把前端的檢視層,分為了 三部分 Model, View , VM ViewModel

下面用一幅圖來分析他們之間的關係: 在這裡插入圖片描述

3.常見的指令

3.1插值表示式

{{msg}}
 <!-- 將來 new 的Vue例項,會控制這個 元素中的所有內容 -->
<div id="app">
<!-- {{插值表示式}} -->
<p>{{ msg }}</p>   
</div>
<script>
    // 2. 建立一個Vue的例項
    // 當我們匯入包之後,在瀏覽器的記憶體中,就多了一個 Vue 建構函式
    //  注意:我們 new 出來的這個 vm 物件,就是我們 MVVM中的 VM排程者
    var vm = new Vue({
      el: '#app',  // 表示,當前我們 new 的這個 Vue 例項,要控制頁面上的哪個區域
      // 這裡的 data 就是 MVVM中的 M,專門用來儲存 每個頁面的資料的
      data: { // data 屬性中,存放的是 el 中要用到的資料
        msg: '歡迎學習Vue' // 通過 Vue 提供的指令,很方便的就能把資料渲染到頁面上,程式設計師不再手動操作DOM元素了【前端的Vue之類的框架,不提倡我們去手動操作DOM元素了】
      }
    })
  </script>

3.2 v開頭的內建指令

3.2-1 渲染文字

v-text

3.2-2渲染html

v-html

注意:v-text和v-html會將標籤的內容完全覆蓋,而插值表示式可以在前後拼接內容

3.2-3解決插值表示式的閃爍問題

v-cloak

css程式碼:

<style>
	[v-cloak] {
 		 display: none;
 	 }
</style>

html程式碼:

<div id="app">
	<div v-cloak>{{ msg }}</div>
</div>

解決閃爍問題的思路:將標籤新增v-cloak屬性,給標籤新增樣式,當插值表示式有資料的時候就會將標籤自動顯示

3.2-4. 繫結屬性

v-bind  簡寫  :

HTML程式碼:

	<input type='text' v-bind:value='msg'/>

	<input type='text' :value='msg + "123"'/>

繫結屬性可以針對標籤自帶的屬性, 也可以針對自定義屬性

	<input type='text' :flag='msg' :value='msg + "123"'/>

**注意: 以上的所有指令用到的msg都需要放到Vue例項的data屬性中**

vm例項程式碼:

	let vm = new Vue({
		el: '#app', // el對應的是vm的控制檢視區域, 傳入選擇器即可
		data: { // data對應的是Model層, 也就是資料物件, 該頁面所有的資料都會存放在該物件中
			msg: 'hello' // msg就是儲存在這裡
		}
	})

3.2-5. 繫結事件

	v-on  簡寫   @

HTML程式碼:

	<button value='按鈕' v-on:click="show" />

	<button value='按鈕' @click="show" />

vm例項物件:

	let vm = new Vue({
		el: '#app', // el對應的是vm的控制檢視區域, 傳入選擇器即可
		data: { // data對應的是Model層, 也就是資料物件, 該頁面所有的資料都會存放在該物件中
			msg: 'hello' // msg就是儲存在這裡
		},
		methods: {
			show: function() {
				alert('helloworld')
			}
		}
	})

4 在methods的函式中訪問data的資料

  1. 在vm例項建立時, 會將methods和data物件中的所有成員掛載到vm例項本身
  2. 在methods中所有的函式內部this都會指向vm例項
  3. 所以需要在methods中的函式內部訪問data中的xxx資料, 應該 this.xxx

5 事件修飾符

事件修飾符需要加在繫結事件的後面

例如:

<div @click.stop="divClickHandler"></div>
  1. .stop

    阻止冒泡

  2. .prevent

    阻止預設行為

  3. .self

    只有點選自己的時候才會觸發事件, 其他情況都不會觸發(例如點選了子元素, 預設情況會冒泡到當前元素, 如果加了self事件修飾符則不會觸發當前元素的事件)

  4. .once

    只觸發一次

  5. .capture

    事件捕獲

注意: 多個事件修飾符可以同時新增給一個事件, 例如: @click.once.prevent 表示點選事件只觸發一次並阻止預設行為, 第二次點選既不會觸發事件也不會阻止預設行為

6 雙向資料繫結的指令

在vue中實現雙向資料繫結的指令只有:

v-model

v-model指令也只能用在表單元素身上, 不需要像v-bind那樣指定要繫結的屬性, 因為v-model只能繫結表單元素的value屬性, 所以用法如下:

<input type="text" v-model="msg">

使用v-model繫結變數時一定要在data中先宣告好變數

7 繫結class完成樣式修改

通過v-bind繫結class屬性

  1. 以前的使用方式, 不使用v-bind繫結, 適用於類樣式固定的場景

  2. 個別類樣式需要根據識別符號來切換, 例如active類樣式, 推薦使用v-bind陣列的方式來繫結

     <div :class="['red', 'thin', {active: flag}]"></div>
    
  3. 很多類樣式都需要根據識別符號來切換, 推薦使用v-bind物件的方式來繫結

     <div :class="{red: true, thin: flag2, 'form-control': flag}"></div>
    

8 繫結style完成樣式修改

通過v-bind繫結style屬性

  1. 繫結物件

     <div :style="{ width: '200px', height: '300px', 'background-color': 'red', 'font-weight': 200 }"></div>
    
  2. 繫結陣列, 樹中存放多個樣式物件, 可以將多個樣式物件的樣式屬性設定上去

9 迴圈渲染

v-for指令

  1. 迴圈陣列

    陣列有幾個元素, 就會迴圈建立幾個p標籤 普通陣列:

     <p v-for="(item, index) in arr">{{ item }}</p>
    

    如果陣列中儲存的是物件

     <p v-for="(item, index) in arr">{{ item.name }}</p>
    
  2. 迴圈物件

    物件有幾個屬性, 就會迴圈建立幾個p標籤

     <p v-for="(value, key) in obj">{{ value }}</p>
    
  3. 迭代數字(從1開始)

    從1開始迭代迴圈到指定的值, 如果需要用到35-45之間的值

     <p v-for="count in 10">{{ count + 34 }}</p>