## 非父子组件间组件传值
![](https://box.kancloud.cn/e0a4c3a9d7261bcc5ebb3cbcccc7d18b_1277x546.png)
## 两种方式
1. 借助vuex.
2. 使用发布订阅模式,总线机制(Bus/总线/发布订阅模式/观察者模式)
## 总线机制
```
<div id="app">
<child content="jack"></child>
<child content="milan"></child>
</div>
<script>
Vue.prototype.bus = new Vue();
Vue.component('child', {
props: {
content: String,
},
data: function () {
return {
selfContent: this.content,
};
},
template: `
<div @click="handleClick"> {{selfContent}} </div>
`,
methods: {
handleClick: function () {
this.bus.$emit('change', this.selfContent);
}
},
mounted: function () {
var this_ = this;
this.bus.$on('change', function (msg) {
this_.selfContent = msg;
})
}
});
new Vue({
el: '#app',
});
</script>
```
- 基础
- MVVM
- 前端组件化
- VUE实例
- 生命周期
- 指令
- v-bind
- 模板语法
- 使用样式
- class样式
- 内联样式
- v-for
- v-if和v-show
- 过滤器
- 计算属性
- 方法侦听器
- 计算属性的set和get
- watch,computed,methods对比
- 样式绑定
- 条件渲染
- 组件
- 组件化和模块化区别
- 使用组件的细节
- 父子组件数据传递
- 组件参数校验与非props特性
- 给组件绑定原生事件
- 非父子组件间的传值
- 在vue中使用插槽
- 作用域插槽
- 动态组件与v-once指令
- 动画特效
- vue中CSS动画原理
- 使用animate
- 同时使用过度和动画
- JS动画与velocity的结合
- 多个元素或组件的过度
- vue列表过度
- 动画封装
- 路由
- 什么是路由
- VUEX
- 概述
- 安装
- 访问仓库