“Vue从入门到实战:杂项”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
(创建页面,内容为“==组件通信的其他方式== 前面介绍的组件通信的三种方式: *父组件通过prop向子组件传递数据 *子组件通过自定义事件向父组…”)
(没有差异)

2021年2月18日 (四) 10:03的版本

组件通信的其他方式

前面介绍的组件通信的三种方式:

  • 父组件通过prop向子组件传递数据
  • 子组件通过自定义事件向父组件发起通知或进行数据传递
  • 子组件通过<slot>元素充当占位符,获取父组件分发的内容,也可以在子组件的<slot>元素上使用v-bind指令绑定一个插槽prop,向父组件提供数据。

除此之外,还有其他实现方式

访问根实例

在每一个new Vue实例的子组件中,都可以通过$root属性来访问根实例。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="vue.js"></script>
	</head>
	<body>
		<div id="app">
			<parent></parent>
		</div>
	
		<script>
			Vue.component('parent', {
				template: '<child></child>'
			});
			Vue.component('child', {
			 	methods: {
			 		accessRoot(){
			 			console.log("单价:" + this.$root.price);
			 			console.log("总价:" + this.$root.totalPrice);
			 			console.log(this.$root.hello());
			 		}
			 	},
				template: '<button @click="accessRoot">访问根实例</button>'
			})

			new Vue({
			  el: '#app',
			  data: {
			  	price: 98
			  },
			  computed: {
			  	totalPrice(){
			  		return this.price * 10;
			  	}
			  },
			  methods: {
			  	hello(){
			  		return "Hello, Vue.js无难事";
			  	}
			  }
			})
		</script>
	</body>
</html>