全局注册
组件定义:Vue.component('组件名称','组件内容')
参数1: 自定义组件名称
参数2: 组件的内容(对象的形式)
局部注册:
通过一个普通的 JavaScript 对象来定义组件
var ComponentA = { /* ... */ }
var ComponentB = { /* ... */ }
在components 选项中定义你想要使用的组件
new Vue({
el: '#app',
components: {
'component-a': ComponentA,
'component-b': ComponentB
}
})
/*
对于 components 对象中的每个 property 来说,其 property 名就是自定义元素的名 字,其 property 值就是这个组件的选项对象。
*/
组件通信:
父传子
父级调用子元素,通过子元素的属性来传入数据
子级内内部通过props来接受对应的数据
父组件往子组件传数据:
定义的子组件的名称:k-pagination
子组件的接收方式:props:[‘pages’,‘page’]
子传父
*注意:vue中数据默认是单向流动,只能父到子直接传递,但是子到父不能直接修改。
原因:因为父级的数据不一定只是某个子级在使用,也许还会有其它的子级也在使用这个数据,很容易就会出现数据混乱。
解决:如果子级想修改数据,那么需要子级去通知父级,父级接受到这个通知后,再去决定是否修改。
通知的方式:(自定义) 事件机制
父组件接受子组件通知的方式:<k-pagination @prevpage=“prevpage”
@changepage=“changepage”>
定义的子组件的名称:k-pagination
子组件定义往父组件传参的方式:this.$emit(‘事件名称’,事件所需要的参数)