vue组件

组件(compoent)是vue最强大的功能之一。

称之为元素,组件可以扩展HTML中的元素,封装可重用的代码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEKCGko6-1604129087137)(C:\Users\DELL\AppData\Local\Temp\1564645532592.png)]

如何注册一个全局组件:

语法:Vue.compoent(tagName,Options)

tagName就是组件名,Options是配置的选项,用一下方式调用组件

语法:

全局组件

所有实力都可以用到全局组件

<body>
<div id="app">
<aaa></aaa>
</div>
<script>
//注册
Vue.component('aaa',{
template:'<h1>这就是我自定义的全局组件</h1>'
})
//创建实例
new Vue({
el:"#app"
})
</script>
</body>

局部组件

<body>
<div id="app">
<aaa></aaa>
</div>
<script>
var child ={
template:'<h1>我是局部组件</h1>'
}
//创建实例
new Vue({
el:"#app",
components:{
aaa:child
}
})
</script>
</body>

prop

prop 是父组件用来传递数据的一个自定义的属性

父组件通过prop把数据传递给子组件,子组件就需要显示的方式声明“prop”

<body>
<div id="app">
<child msg = "hello"></child>
</div>
<script>
Vue.component('child',{
//声明props
props:['msg'],
//可以在vm实例中进行像“this.message”这样的使用
template:'<span>{{msg}}</span>'
})
new Vue({
el:'#app'
})
</script>
</body>

动态prop

类似于用v-bind绑定HTML特性的一个表达式,我们也可以用v-bind动态绑定prop的值到我们的父组件的数据中。

<body>
<div id="app">
<div>
<input v-model="parentMsg" /><br />
<child v-bind:message="parentMsg"></child>
</div>
<script>
Vue.component('child',{
props:['message'],
template:'<span>{{message}}</span>'
})

//创建实例
new Vue({
el:'#app',
data:{
parentMsg:'父组件内容'
}
})
</script>
</div>
</body>

自定义事件

父组件是使用props传递数据给子组件,子组件想要把数据传递回去,就需要我们自定义事件

使用v-on指令绑定自定事件

$on(eventName)监听事件

$emit(eventName)触发事件

<body>
<div id="app">
<div id="counter-event-example">
<p>{{ total }}</p>
<button-counter v-on:increment="incrementTotal"></button-counter>
<button-counter v-on:increment="incrementTotal"></button-counter>
</div>
</div>

<script>
Vue.component('button-counter', {
template: '<button v-on:click="incrementHandler">{{ counter }}</button>',
data: function () {
return {
counter: 0
}
},
methods: {
incrementHandler: function () {
this.counter += 1
this.$emit('increment')
}
},
})
new Vue({
el: '#counter-event-example',
data: {
total: 0
},
methods: {
incrementTotal: function () {
this.total += 1
}
}
})
</script>
</body>

回顾:

1、注册一个全局的组件

2、注册局部组件

3、props父组件对子组件传值

4、自定义事件,子组件像父组件传值

作业:

1、搞清楚什么是组件,并熟练使用祖册全局组件和局部组件

}
}
})
</script>
</body>
## 回顾:

1、注册一个全局的组件

2、注册局部组件

3、props父组件对子组件传值

4、自定义事件,子组件像父组件传值

## 作业:

1、搞清楚什么是组件,并熟练使用祖册全局组件和局部组件

2、熟练使用组件进行传值