vue基礎篇 元件詳解(第七章)(一)

2021-09-09 07:44:55 字數 3777 閱讀 7636

一、元件與復用

1、為什麼使用元件

vue元件就是提高重用性,**可復用。還有一些自定義標籤,每乙個標籤代表乙個元件,比如:、、等。

2、元件用法

vue元件需要註冊後才可以使用。註冊有全域性註冊區域性註冊兩種方式。

全域性註冊

vue.component('my-component', );
要在父例項中使用這個元件,必須要在例項建立前註冊,之後就可以用的形式來使用元件。使用小寫加減號分割的形式命名。

vue.component('my-component', );
template的dom結構必須被乙個元素包含,缺少

會無法渲染並報錯。

在vue例項中,使用components選項可以區域性註冊元件,註冊後的元件只在該例項作用域下有效。

vue元件的模板在某些情況下會受到html的限制,比如內規定只允許是、、等這些**元素,所以在內直接使用元件時無效的。這種情況下,可以使用特殊的is屬性來掛載元件。

vue.component('my-component', );

常見的限制元素還有vue元件的子元件用emi

t()來

觸發事件

,父元件

用emit()來觸發事件,父元件用

emit()

來觸發事

件,父組

件用on()來監聽子元件的事件。

父元件也可以直接在子元件的自定義標籤上使用v-on來監聽子元件觸發的自定義事件。

vue.component('my-component',

},methods: ,

handlereduce: function ()

}});new vue(,

methods:

}});

在改變元件的data "counter"後,通過emi

t()再

把它傳遞

給父元件

,父元件

用@in

crea

se和@

redu

ce

。emit()再把它傳遞給父元件,父元件用@increase和@reduce。

emit()

再把它傳

遞給父組

件,父組

件用@i

ncre

ase和

@red

uce。

emit()方法的第乙個引數是自定義事件的名稱。

除了用v-on在元件上監聽自定義事件外,也可以監聽dom事件,這時可以用.native修飾符表示監聽時乙個原生事件,監聽的是該元件的根元素。

2、使用v-model

vue可以在自定義元件上使用v-model指令。

元件$emit()的事件名時特殊的input,在使用元件的父級,並沒有在上使用@input="handler",而是直接用了v-model繫結的乙個資料total

v-model還可以用來建立自定義的表單輸入元件,進行資料雙向繫結。

-vue.component('my-component',

}});new vue(,

methods:

}});

實現這樣乙個具有雙向繫結的v-model元件要滿足下面兩個要求:

接收乙個value屬性

在有新的value時觸發input事件

3、非父子元件通訊

在實際業務中,除了父子元件通訊外,還有很多非父子元件通訊的場景,非父子元件一般有兩種,兄弟元件和跨多級元件。

在vue 1.x版本中,除了$emit()方法外,還提供了¥dispatch()$broadcast()

$dispatch()用於向上級派發事件,只要是它的父級(一級或多級以上),都可以在vue例項的events選項內接收。

此例項只在vue 1.x版本中有效:

vue.component('my-component',

}});new vue(,

events:

}});

這些方法在vue 2.x版本中已廢棄。

在vue 2.x中,推薦任何乙個空的vue例項作為**事件匯流排(bus),也就是乙個中介。

var bus = new vue();

vue.component('component-a',

}}); data: ,

mounted: function () )

}});

這種方法巧妙而輕量地實現了任何元件間的通訊,包括父子、兄弟、跨級。

除了**事件匯流排bus外,還有兩種方法可以實現元件間通訊:父鏈和子元件索引。

父鏈

在子元件中,使用this.$parent可以直接訪問該元件的父例項或元件,父元件也可以通過this.$children訪問它所有的子元件,而且可以遞迴向上或向下無限訪問,直到根例項或最內層的元件。

vue.component('component-a',

}}); data:

});

子元件索引

當子元件較多時,通過this.$children來遍歷出需要的乙個元件例項是比較困難的,尤其是元件動態渲染時,它們的序列是不固定的。

vue提供了子元件索引的方法,用特殊的屬性ref來為子元件指定乙個索引名稱。

vue.component('component-a',

},}); methods:

}});

在父元件模板中,子元件標籤上使用ref指定乙個名稱,並在父元件內通過this.$refs來訪問指定名稱的子元件。

ref

s只在組

件渲染完

成後才填

充,並且

它是非響

應式的。

它僅僅作

為乙個直

接訪問子

元件的應

急方案,

應當避免

在模板或

計算屬性

中使

用refs只在元件渲染完成後才填充,並且它是非響應式的。它僅僅作為乙個直接訪問子元件的應急方案,應當避免在模板或計算屬性中使用

refs只在

元件渲染

完成後才

填充,並

且它是非

響應式的

。它僅僅

作為乙個

直接訪問

子元件的

應急方案

,應當避

免在模板

或計算屬

性中使用

refs。

vue 2.x將v-el和v-ref合併成ref,vue會自動去判斷是普通標籤還是元件。

Linux複習篇(第七章)

互動程序。它是由某種shell程式啟動的程序,如執行乙個命令。互動程序既可以在前台執行,也可以在後台執行。批處理程序。這種程序和終端沒有聯絡,但它是乙個程序系列。監控程序。也稱為守護程序,它是在linux系統啟動時執行的程序,並且執行在後台。at命令用於在使用者指定的時刻執行指定的命令或命令序列。指...

Linux 入門篇第七章

命令列歷史 1 ifconfig 2 init 3 3 clear 4 ls 5 clear 6 lsblk 7 claer 8 clear 9 ls 10 clear 11 ls 12 lsblk 13 pwd 14 hostname 15 pwd 如果機器出問題了,你可以檢視歷史看執行錯了什麼命...

Python 基礎教程(第七章)

在方法或者變數前加上雙下劃線 即可將他們變為私有 類的定義就是執行 塊 多重繼承 class calculator def calculate self,expression self.value eval expression class talker def talk self print hi...