当前位置: 首页 > news >正文

025: vue父子组件中传递方法控制:$emit,$refs,$parent,$children

在这里插入图片描述

第025个

查看专栏目录: VUE ------ element UI


专栏目标

在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。

(1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeMount,mounted, beforeUpdate,updated, beforeDestroy,destroyed,activated,deactivated,errorCaptured,components,)、 $root , $parent , $children , $slots , $refs , props, $emit , eventbus ,provide / inject, Vue.observable, $listeners, $attrs, $nextTick , v-for, v-if, v-else,v-else-if,v-on,v-pre,v-cloak,v-once,v-model, v-html, v-text, keep-alive,slot-scope, filters, v-bind,.stop, .native, directives,mixin,render,国际化,Vue Router等

(2)提供element UI的经典操作:安装,引用,国际化,el-row,el-col,el-button,el-link,el-radio,el-checkbox ,el-input,el-select, el-cascader, el-input-number, el-switch,el-slider, el-time-picker, el-date-picker, el-upload, el-rate, el-color-picker, el-transfer, el-form, el-table, el-tree, el-pagination,el-badge,el-avatar,el-skeleton, el-empty, el-descriptions, el-result, el-statistic, el-alert, v-loading, $message, $alert, $prompt, $confirm , $notify, el-breadcrumb, el-page-header,el-tabs ,el-dropdown,el-steps,el-dialog, el-tooltip, el-popover, el-popconfirm, el-card, el-carousel, el-collapse, el-timeline, el-divider, el-calendar, el-image, el-backtop,v-infinite-scroll, el-drawer等

本文章目录

    • 专栏目标
    • 需求背景
    • 示例效果
    • 示例源代码
      • 父组件(共99行)
      • 子组件 child.vue(共37行)
    • 理论介绍

需求背景

这是一个父子组件之间的控制方法,父组件可以通过‘ c h i l d r e n ’ 或 ′ children’或' childrenrefs’来控制子组件中的方法;子组件可以通过$parent或 $emit来控制子组件中的方法

示例效果

在这里插入图片描述

示例源代码

父组件(共99行)

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2022-09-04
*/<template><div class="container"><div class="top"><h3>父子方法控制:$emit,$refs,$parent,$children </h3><div class="author">大剑师兰特, 还是大剑师兰特,gis-dajianshi</div></div><el-button size="mini" type="primary" @click="showc1()"> refs子组件控制1 </el-button><el-button size="mini" type="primary" @click="showc2()"> children子组件控制2 </el-button><Childcom ref="mychild" @showP='showP2' /><div v-if="isParent2">这是用$emit方法显示的父组件信息	(parent2)</div><div v-if="isParent1"><div class="oneLine" v-for="(item,index) in listData" :key="index"><div class="fl20"><img :src="item.thumbnail_pic_s" alt=""></div><div class="fl20"> {{item.date}} </div><div class="fl20">{{item.title}} </div></div></div></div>
</template><script>import Childcom from '@/components/child.vue'export default {data() {return {listData:[],isParent1:false,isParent2:false,}},components: {Childcom},mounted() {this.getdata()},methods: {showc1(){this.$refs.mychild.showChild1()},showc2(){console.log(this.$children)this.$children[2].showChild2()},showP1(){this.isParent1=true;},showP2(){this.isParent2=true;},getdata() {let url = "/listdata"this.$request(url, {}, "GET").then((res) => {this.listData = res.data.dataconsole.log(this.listData)})},}}
</script>
<style scoped>.container {width: 1000px;height: 540px;margin: 50px auto;border: 1px solid orange;}.top{margin:0 auto 30px; padding:10px 0;background-color: aquamarine;}.oneLine {width: 100%;height: 50px;line-height: 50px;background: #eee;margin-top: 10px;overflow: hidden;cursor: pointer;}.oneLine .fl20{ float: left; padding:0 10px;min-width: 150px;}
</style>

子组件 child.vue(共37行)

<template><div>		<div v-if="is1">{{text1}}</div><div v-if="is2">{{text2}}</div>		<hr>		<el-button @click="showparent1()" type="danger" size="mini"> 开启父组件内容1</el-button>	<el-button @click="showparent2()" type="danger" size="mini"> 开启父组件内容2</el-button>	</div>
</template><script>export default{data() {			return {is1:false,is2:false,text1:'通过第一种方法显示出来',text2:'通过第二种方法显示出来',}},methods:{showChild1(){this.is1=true;},showChild2(){this.is2=true;},showparent1(){this.$parent.showP1();},showparent2(){this.$emit('showP')},			},}</script>

理论介绍

父组件访问子组件:使用this.$children或 $refs
this.$children得到是一个子组件数组,它包含所有子组件对象。
子组件访问父组件:使用this.$parent , this.$emit
子组件访问根Vue实例:使用this.$root
http://www.lryc.cn/news/155235.html

相关文章:

  • 使用js搭建简易的WebRTC实现视频直播
  • LeetCode 2707. Extra Characters in a String【动态规划,记忆化搜索,Trie】1735
  • 设计模式行为型-模板模式
  • 9.3.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-车道线检测
  • django.core.exceptions.AppRegistryNotReady: Apps aren‘t loaded yet.
  • 【C#】C#调用进程打开一个exe程序
  • 宝塔面板定时监控和重启MySQL数据库(计划任务)
  • Beats:安装及配置 Metricbeat (二)- 8.x
  • Redis之哨兵模式解读
  • 题目:2644.找出可整除性得分最大的整数
  • 报错:axios 发送的接口请求 404
  • 三年前端还不会配置Nginx?刷完这篇就够了
  • blender 场景灯光基础设置
  • 如何查看 SQLyog 中数据库连接信息中的密码
  • 【SpringSecurity】八、集成图片验证码
  • 【本地代码问题】启动程序,报错:java.lang.IllegalArgumentException: No selectors
  • 手写RPC框架--4.服务注册
  • oracle 解锁表
  • 使用Dbeaver连接GaussDB
  • WSL使用技巧 / 虚拟机对比
  • vuex_cart案例
  • Linux系统的安装
  • 微服务设计和高并发实践
  • 2023年高教社杯数学建模思路 - 案例:粒子群算法
  • Tomcat 集群介绍
  • Windows右键添加用 IDEA 打开
  • Golang 中return和defer执行先后顺序
  • 业务数据模拟/采集
  • qt day 5
  • Java设计模式之适配器模式