父—子共享数据:使用自定义属性。
<Son :msg="message" :user="userInfo"/>
data() {
return {
message: "hello",
userInfo: {
name: "zs",
age: 12
}
}
}
props: ['msg', 'user']
子—父共享数据:使用自定义事件。
export default {
data() {
return {
count: 0,
}
},
methods: {
add() {
this.count += 1;
this.$emit('numchange', this.count);
}
}
}
<Son @numchange="getNewCount"/>
export default {
data() {
return {
countFromSon: 0
}
},
methods: {
getNewCount(val) {
this.countFromSon = val;
}
}
}
兄弟关系:在Vue2.x中数据共享的方案是EventBus。
import Vue from 'vue';
export default new Vue();
import bus from './eventBus.js'
export default {
data() {
return {
msg: 'hello'
}
},
methods: {
sendMsg() {
bus.$emit('share', this.msg);
}
}
}
import bus from './eventBus.js'
export default {
data() {
return {
msgFromLeft: ''
}
},
methods: {
sendMsg() {
bus.$on('share', val => {
this.msgFromLeft = val;
});
}
}
}
|