上次咱们说了什么是组件,和它的基本应用,下面咱们来看一下我自认为的进阶内容。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...