使用自定义属性props(props在子组件中)

使用自定义事件

子写自定义事件并传入数据,父亲使用子组件绑定自定义事件并用事件对应的函数接收数据
vue2中使用EventBus

个体理解:相当于在二者之间创建了一个共享的Vue实例,在两个组件都被命名为了bus。之后的操作同子->父一样,先在发送方创建自定义事件,接收方直接使用bus实例.$on绑定事件,回调函数接收结果。
bus总线注意:因为bus在总线,所以on接收的时间要比emit的时间早,不然会接受不到数据。可以通过延迟emit的生命周期或使用this.$nextTick(()=>this.$bus.#emit)

// 等同于
Vue.component('custom-input', {
props: ['value'],
template: `
`
})
注意:在单选框、复选框等类型的输入控件中可能会将value属性用于不同的目的,因此使用model选项来避免这样的冲突。
// 父组件
// 子组件
Vue.component('base-checkbox', {
model: {
prop: 'checked',
event: 'change'
},
props: {
checked: Boolean
},
template: `
`
})
lovingVue的值将会传入名为checked的prop
//父组件给子组件传入一个函数
age = res">
//子组件通过调用这个函数来实现修改父组件的状态。
mounted () {
console.log(this.$emit('setAge',1234567));
}
// 其实就是v-model的实现
我们优化一下
//父组件将age传给子组件并使用.sync修饰符。
//子组件触发事件
mounted () {
console.log(this.$emit('update:age',1234567));
}
// 子传父的时候触发update:属性,新值
// 父组件直接属性.sync接受
sync修饰符在一个组件中可以多次使用,但在vue2中v-model只能使用一次