父子间通信四 ($dispatch 和 $broadcast用法)

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>js测试父子之间通信</title>
	<script type="text/javascript" src="lib/boot.js"></script>
	<style>
		.box{
			width:100%;
			max-width:640px;
			margin:40px auto;
			border:1px solid #ccc;
			padding:20px;
		}
	</style>
</head>
<body>
	<div id="app" v-cloak>
		<!-- 定义 -->
		<child :msg-data="msg"></child>
	</div>
	<script>
		var tx = function(){
			// 父组件
			var child = {
				template:`
				     <div class="box" name="cs-slot">slot用法</div>
                     <div class="box">
						 <i-button @click="send()">获取数据</i-button>
    					 <i-button @click="cancel" type="primary">取消数据</i-button>
    					 <div>
                             <ul>
                                 <li v-for="item in msgData">名称:{{item.name}}---id:{{item.id}}</li>
                             </ul>
    					 </div>
                     </div>
				`,
				data:function(){
					return {
						msgData:[]
					}
				},
				events:{
                   getv:function(val){
                   	  this.msgData = val;
                   },
                   clearV:function(val){
                   	  this.msgData = [];
                   }
				},
                methods:{
                	send:function(){
                        this.$dispatch(‘getList‘,‘hellow kitty‘);//调用events父类方法
                	},
                	cancel:function(){
                  	    this.$dispatch(‘clearList‘,‘hellow kitty‘);//调用events父类方法
                	}
                }

			}
			return new Vue({
				el:‘#app‘,
				data:{
					msg:[]
				},
				events:{
				   getList:function(val){
                   	  this.msg = [{name:‘百度‘,id:‘001‘},{name:‘百威‘,id:‘002‘},{name:‘腾讯‘,id:‘003‘}];
                   	  this.$broadcast(‘getv‘,this.msg);//调用events子类方法
                   },
                   clearList:function(){
                   	  this.$broadcast(‘clearV‘,‘‘);//调用events子类方法
                   }
				},
				components:{
					child:child
				}
			})
		}()
	</script>
</body>
</html>

  

时间: 2025-01-02 18:36:42

父子间通信四 ($dispatch 和 $broadcast用法)的相关文章

vue组件父子间通信之综合练习--假的聊天室

<!doctype html> <html> <head> <meta charset="UTF-8"> <title>组件父子间通信之综合练习</title> <script src="js/vue.js"></script> </head> <body> <div id="container"> <p>

vue组件父子间通信02

三.组件间通信($parent $refs) 父组件要想获取子组件的数据:①在调用子组件的时候,指定ref属性<child-component ref="mySon"></child-component> ②根据指定的引用的名字 找到子组件的实例对象this.$refs.mySon 子组件要想获取父组件的数据:①直接读取this.$parent :::通过this.$refs拿到子组件的数据 <!doctype html> <html>

Vue组件------父子间通信

子组件传递数据 用户已经登录 父组件接收数据 并显示列表,未登录不显示列表 /* 有两个组件,分别是main-component,header-component.main-component是由header-component和一个列表(有5条数据 [100,200,300,400,500]),header-component是由一个h1的标签:'这是页头',有一个数据isUserLogin:true 在渲染main-component时候,读取header-component在挂载完毕之后通

vue组件间通信

组件间通信 vue组件之间的通信方式包括父子通信.子父通信和非父子通信 父子间通信 <!-- 在父组件中使用子组件 --> <!-- 在父组件中向子组件传递数据,需要在子组件上面添加属性,使其值等于要传递的数据 --> <Child :childData="childData"></Child> // 父组件 // 引入子组件 import Child from './Child' export default { // 注册子组件 co

关于gevent的协程间通信及队列和事件event用法

前言: 今天就写点gevent的高级点的用法,对于我来说 这些也是常用的gevent模块. gevent的AsyncResutl模块的用途,看字眼的意思是一个异步的任务的结果. 其实官方的说法也让人有些发蒙.  其实说白了就是协程间的通信,我是老板,让大哥和小弟同事去收账,小弟做完了后,会等大哥来问话. 如果小弟没有完成,还在做着事情,那大哥会在一个时间里,等待小弟返回结果.一直等 ! 在实战中这个就很有意思了.   我们同时做一个事情,但是我们又需要互相的帮助,或者是互相的通信.  这个时候就

非父子组件间通信

非父子组件之间的通信,可以通过一个空的 Vue 实例作为中央事件总线(事件中心),用他来触发事件和监听事件. 在这里,如果是工作中的新手看了官网的例子直接上手写,会有些发懵.这个作为事件总线空的 Vue 实例我该写哪里去?因为工作中我们的组件都是互相独立的,不可能写一起的,作用域是不同的,所以需要稍作调整 一.在 main.js 中初始化根 Vue 之前,添加一个 data 对象,内写入一个名为 Event 的空 Vue 对象,也就是中央事件总线 new Vue({ el: '#app', da

Vue2.0入门系列——父子组件间通信

1.子组件更新,父组件不变 点击"按钮"按钮,子组件数据被修改,父组件数据不变  =========>>>>>>  项目源代码, <head> <meta charset="UTF-8"> <title>v2.0父子组件通信</title> <script src="./vue.js"></script> <script> wi

vue2.0弃用$dispatch和$broadcast

$dispatch 和 $broadcast 已经被弃用.请使用更多简明清晰的组件间通信和更好的状态管理方案,如:Vuex. 因为基于组件树结构的事件流方式实在是让人难以理解,并且在组件结构扩展的过程中会变得越来越脆弱.这种事件方式确实不太好,我们也不希望在以后让开发者们太痛苦.并且$dispatch 和 $broadcast 也没有解决兄弟组件间的通信问题. 对于$dispatch 和 $broadcast最简单的升级方式就是:通过使用事件中心,允许组件自由交流,无论组件处于组件树的哪一层.由

vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例

vue2中废弃了$dispatch和$broadcast广播和分发事件的方法.父子组件中可以用props和$emit().如何实现非父子组件间的通信,可以通过实例一个vue实例Bus作为媒介,要相互通信的兄弟组件之中,都引入Bus,之后通过分别调用Bus事件触发和监听来实现组件之间的通信和参数传递. 首先需要在任意地方添加一个bus.js 在bus.js里面 写入下面信息 1 import Vue from 'vue' 2 export default new Vue; 在需要通信的组件都引入B