拾光°
props方式 加属性绑定
//这是html 模板
<div id="app">
// 1.使用自定义属性绑定父组件传过来的数据
<temp-div :msg='msg'></temp-div>
</div>//子组件
Vue.component('temp-div', {
// 2.用props 来接收 父组件传过来的数据
props: ['msg'],
template: `
<div>
<div>{{msg}}</div>
</div>
`,
})//父组件
var app = new Vue({
el: '#app',
data: {
msg: '我是父组件的数据'
}
})注意
$emit
语法:
// 子组件
Vue.component('menu-item', {
data: function() {
return {
re: '子组件的数据'
}
},
template: `
<div>
// 这是自定义事件名称 这是要发给父组件的数据
<button @click='$emit("enlarge-text", re)'>
传递数据
</button>
</div>
`
});
在模板里定义一个点击事件用 $emit("自定义事件名称",传递的数据)
// 自定义事件名 处理函数
<menu-item @enlarge-text='handle'></menu-item>父组件接受传过来的数据
// 父组件
var vm = new Vue({
el: '#app',
methods: {
//这就是第二步的处理函数 用函数携带参数的形式就接受到了
handle: function(val) {
console.log(val);
}
}
});
事件中心方式通信

// 提供事件中心
var hub = new Vue();// 组件A
template: `
<div>
<div>TOM:{{num}}</div>
<div>
<button @click='handle'>点击</button>
</div>
</div>`,
methods: {
handle: function(){
// 传递给事件中心 2是传递的数据
hub.$emit('A-event', 2);
}
},// 组件B 用mounted钩子函数监听
mounted: function() {
// 监听事件 val是A组件传过来的
hub.$on('A-event', (val) => {
this.num = val;
});