$emit and $on can transfer values between components. We know that parent components use props to transfer values to child components, but child components are not allowed to transfer values to parent components. This can be achieved by using this. This article mainly introduces examples of vuejs using $emit and $on to transfer values between components. It has certain reference value. If you are interested, you can learn about it. I hope it can help everyone.
Note: The $emit and $on events must be on a public instance to be triggered.
Example: I want to implement the address book function of a certain system. On the web side, we can use the ztree plug-in based on jQuery to display the directory. However, in the vuejs framework, the tree directory needs to be implemented through recursive components.
1. Now there are two components, the parent component contact_index.vue and the child component cust_tree.vue
##2. Click inside the parent component Select a bank and jump out of the bank tree directory structure (implemented using the recursive component of vuejs). Two values need to be passed:import Vue from 'vue' export var bus = new Vue()
//父组件与子组件都要import bus.js import {bus} from '../../bus.js'
created(){ bus.$on('custTreeSay',(id)=>{ //监听传值--机构代码 this.instCode = id; //关闭弹窗 this.popupVisibleTree = false; //调用查询方法刷新通讯录列表 this.query(); }); bus.$on('custTreeSayName',(name)=>{ //监听传值--机构名称 this.instName = name; }); }
<span @click="propInstCode(model);propInstName(model)"> {{model.name}} </span>
<script type="text/javascript"> import {bus} from '../../bus.js' export default { props: ['model'],//这里通过props接收父组件的传值 //method钩子定义传值方法,这边需要传不同的值 methods: { //通过总线将值传给父组件 propInstCode:function (model) { //$emit触发当前实例事件 bus.$emit('custTreeSay',this.model.id); }, propInstName:function (model) { bus.$emit('custTreeSayName',this.model.name); } }, }
##
//将点击跳出目录选择的方法放到显示的机构选择就可以了 <p class="query_condition_item"> <label>选择机构</label> <input name="instName" v-model="instName" readonly @click="showTree()"> </p> <p class="query_condition_item"> <input name="instCode" v-model="instCode" hidden> </p>
The above is the detailed content of vuejs uses $emit and $on to pass values between components. For more information, please follow other related articles on the PHP Chinese website!