vue组件间传值的方法你知道几种
作者:最好的我们, 发布时间:2024-04-28 09:31:32
一丶父子组件传值
先在父组件中给子组件的自定义属性绑定一个 父组件的变量
<template class="father">
<child :自定义属性名="父组件的变量"></child>
<template >
在子组件的props属性中可以取出父组件给的值,props中的变量用法和data中变量用法完全一样,只不过值的来源不同
export default {
name: "child",
props: ["自定义属性名"],
data() {}
}
二丶子父组件传值
先在父组件中给子组件的 自定义属性 绑定一个父组件的函数
<template class="father">
<child @自定义事件="父的处理函数">
<template >
export default {
name: "father",
data() {}
methods:{
父的处理函数(参数){
//参数:得到子组件触发事件($emit)时,传递过来的数据
}
}
})
在子组件中 this.$emit(“父的处理函数”,this.数据) 触发父组件中的函数进行传参
三丶兄弟组件传值
事件总线:
就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件
创建全局空Vue实例:eventBus
import Vue from 'vue';
const eventBus= new Vue() //创建事件总线
export default eventBus;
具体页面使用$emit发布事件 - 传递值
import eventBus from '@u/eventBus'
eventBus.$emit('send',‘hello')
具体页面使用$on订阅事件 - 接收组件值
import eventBus from '@u/eventBus'
eventBus.$on('send', msg => {
console.log(msg) //控制台输出 hello
}
注意:$on先进行监听,一旦$emit发布事件后所有组件都可以$on监听到事件。所以传递参数的时候一定已经先进行了监听才能得到参数。比如在父组件中$emit事件放在mounted钩子函数中,等待子组件创建并$on开始监听事件后再去触发$emit发布事件。
$off()移除事件监听
import eventBus from '@u/eventBus'
eventBus.$off('send')
事件订阅功能$on是$eventBus对象完成的,与组件无关,如果用v-if销毁子组件的时候,会形成闭包,造成内存泄露,所有要在销毁组件的时候进行取消监听事件
具体形成原因点击查看
四丶$parent /$children与ref
$parent方法是在子组件中可以直接访问该组件的父实例或组件。
在父组件中定义一个切换显示页面执行中的显示方法。
switchLoadPage(msg) {
if(!this.loading && msg)
this.loadtext=msg;
this.loading = !this.loading;
},
在子组件中直接通过$parent去调用该方法
this.$parent.switchLoadPage();
$children方法是在父组件中可以直接访问子组件的实例,但是不保证子组件的顺序。
ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例。
在父组件中自定义一个表格组件,给子组件加上 ref属性
<result ref="result" :config="dgConfig" ></result>
在父组件中就可以通过this.$refs.result去找到result子组件进行操作,比如把父组件的sdata直接放入子组件中
methods: {
info(){
this.$refs.result.sdata = this.sdata;
},
}
来源:https://blog.csdn.net/qq_45466204/article/details/122867453
猜你喜欢
- aes的gcm模式的加密和解密要给已有的系统启用加密解密,目前推荐的是aes的gcm模式的加密和解密,在微服务如果向前有公共方法处理 读取数
- vue-cli npm解决vue项目中缺失core-js报错This dependency was not found:core-js/mo
- 本节要讲解如下图所示的滑块验证码(更为复杂的滑动拼图验证码在下一篇介绍)。这种验证码机制比较简单:将滑块拖动到滑轨的最右端即可完成验证,如下
- 在爬虫百度地图的期间,就为它做了一个界面,运用的是PyQt5。得到意想不到的结果:# -*- coding: utf-8 -*-# Form
- 【1】MySQL中的日期时间类型MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp数据类型
- 下面的示例看看这三个函数的具体的区别,其中var_dump和var_export比较少用,但他们两者又很相似。所以可以看看:<?php
- 本文实例为大家分享了python+opencv识别图片中足球的方法,供大家参考,具体内容如下先补充下霍夫圆变换的几个参数知识:dp,用来检测
- 前段时间发表了一个删除栏目的随笔,当时实现的功能是删除一条信息,这次来实现一下批量删除栏目。我们需要达到的是这样一个效果:选中批量删除按钮后
- 第一步 去高德地图开放平台申请密钥 高德地图开放平台第二部 在vue-cli项目目录结构 里面多了config文件夹和
- 前言本文主要给大家介绍了关于Python中序列的修改、散列与切片的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
- 加密解密字符串的asp函数,如用于ASP链接地址栏参数的加密,看代码就明白。比如:show.asp?id=DB26538FA54C70E1E
- 使用了pandas的Series方法绘制图像体验之后感觉直接用matplotlib的功能好用了不少,又试用了DataFrame的方法之后发现
- SQL 事件探查器数据列 SQL &
- 装饰器(Decorators)装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过继承或是直接修改源代码实现,那么可以
- 我就废话不多说了,直接上代码吧!a=[[1,2,3],[4,5][6,7]["a","b""
- Fiddler,这个是所有软件开发者必备神器!这款工具不仅可以抓取PC上开发web时候的数据包,而且可以抓取移动端(Android,Ipho
- '把pattern 又修改了下'code
- 自动化测试执行过程中,难免会有错误/异常出现,比如测试脚本没有发现对应元素,则会立刻抛出NoSuchElementException异常。这
- pandas创建series方法print("====创建series方法一===")dic={"a"
- 如下所示:# -*- coding: utf-8 -*-#简述:一个整数,它加上100和加上268后都是一个完全平方数#提问:请问该数是多少