<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>非父子组件间传值(bus,总线,发布订阅模式,观察者模式)</title>
		<script src="vue.js"></script>
	</head>
	<body>
		<!-- 实现当点击Dell时,Lee变为Dell。反过来点击Lee,Dell变为Lee -->
		<div id="app">
			<child content="dell"></child>
			<child content="lee"></child>
		</div>
		<script>
			/* 2:给vue实例挂一个bus */
			Vue.prototype.bus = new Vue()
			/* 1:声明一个全局组件child */
			Vue.component('child', {
				data: function() {
					return {
						/* 4:对父组件的参数做一个拷贝 */
						selfContent: this.content
					}
				},
				/* 3:接收父组件传过来的参数 */
				props: {
					content: String
				},
				template: '<div @click="handleClick">{{selfContent}}</div>',
				methods: {
					handleClick: function() {
						/* 5:通过bus(vue实例)向外触发事件 */
						this.bus.$emit('change',this.selfContent)
						
					}
				},
				/* 用生命周期钩子,当组件挂载的时候触发 */
				/* 6:监听5触发的事件,把自身的数据改为传递过来的数据 */
				mounted:function(){
					var this_ = this
					/* 监听触发的change事件 */
					this.bus.$on('change', function(msg) {
						this_.selfContent = msg
					})
				}
			})

			var vm = new Vue({
				el: '#app'
			})
		</script>
	</body>
</html>