上次咱們說了什麼是組件,和它的基本應用,下面咱們來看一下我自認爲的進階內容。html
<!DOCTYPE html>
<html lang="en">
<head>vue
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title>
</head>
<body>app
<div id="app"> {{text}} <children></children> <children></children> <children></children> </div> <script src="./../vue.js"></script> <script> var children = { props:["child"], template:`<div></div>` } var vm = new Vue({ el:"#app", data:{ }, components:{ children } })
####父元素添加自定義事件ide
html:
<children @addNum ="add"></children> //這裏的名字能夠自定義,後面是函數名。函數
js:學習
vm中寫入methods且寫入函數,並在data中寫入數據ui
data:{this
text:0
}code
methods:{component
addNum(){ this.text ++; }
}
template:<button @click="click">{{counter}}</button>
data(){
return{ counter }
}
methods:{
click(){ this.counter ++; // 這裏咱們爲了更好的看到效果。 this.$emit("addNum") //這裏的$emit是起到觸發做用的,也就是說咱們想讓子組件控制父組件必須用這個屬性進行觸發。也能夠把子組件控制父組件這一過程理解爲表單提交,而$emit就是最後的提交。 }
}
這樣就基本完成了子組件控制父組件功能。
<div id="app"> <children>1111</children> </div> <script src="./../vue.js"></script> <script> var children = { template:`<div><slot></slot></div>` //這裏就會把咱們自定義標籤<children></children>裏的內容放到slot中,slot標籤不會在頁面中顯示,它只是一個功能標籤 } var vm = new Vue({ el:"#app", data:{ }, components:{ children } }) </script>
固然咱們要注意一種特殊狀況,若是咱們的自定義標籤沒有內容,咱們能夠在slot中加入內容爲默認內容,可是若是咱們設置了默認內容,而咱們的自定義標籤也不是空的,那麼自定義標籤裏的內容會替代咱們的默認內容。
例如:
<div id="app"> <children> // 這裏咱們有多條數據 <div slot= "header">這是頭</div> // 這裏咱們根據name的不一樣去綁定不一樣數據 <div slot="footer">這是尾</div> </children> </div> <script src="./../vue.js"></script> <script> var children = { template:`<div><slot name="header"></slot><slot name="footer"></slot></div>` // 設置不一樣name } var vm = new Vue({ el:"#app", data:{ }, components:{ children } }) </script>
這樣,咱們就能夠根據name的不一樣而進行得到不一樣的數據了
vue組件遠不止如此,這只是一些較爲基礎的東西。更多的組件知識咱們能夠經過官方來進行學習 https://cn.vuejs.org/v2/guide...