我的需求

有些时候,我们需要获取组件的DOM元素
有些小伙伴会说,这还不简单
直接使用this.$ref.xx不就可以了吗
我们来看一下,是不是我们想的那样简单

组件内容

<template>
<div class="demo">
<h2>我是组件</h2>
<div>我是组件中的数据</div>
</div>
</template>

使用组件的页面

<template>
<div>
我是页面测试一
<testcom ref="testRef"></testcom>
</div>
</template>
<script>
import testcom from "../components/test-com.vue"
export default {
components:{
testcom:testcom
},
mounted(){
console.log('获取组件内的DOM',this.$refs.testRef);
}
}
</script>

现在的实际结果

我想在这个页面内,获取组件内的DOM元素
也就是获取
<div>
我是页面测试一
<testcom ref="testRef"></testcom>
</div>
实际上压根获取的就是这样的
我们并没有获取到组件内的DOM元素。
而是获取的是Vue的组件
那要怎么样才可以获取组件内的元素呢

解决办法使用$el

<template>
<div>
我是页面测试一
<testcom ref="testRef"></testcom>
</div>
</template> <script>
import testcom from "../components/test-com.vue"
export default {
components:{
testcom:testcom
},
mounted(){
console.log('获取组件内的DOM',this.$refs.testRef.$el);
}
}
</script>

需求描述

有些时候我们需要封装组件
封装组件的时候,
我们需要属性直接设置在某一个指定的元素上。
<template>
<div>
我是测试页面
<testcom type="text"></testcom>
<testcom type="password"></testcom>
</div>
</template>

组件

<template>
<div class="demo">
<input name="" id="">
</div>
</template>

实际结果

属性结果直接被添加到跟元素上去了。
因为这个是vue规定的
我们如何让属性设置在指定的元素上面呢?
我们可以使用inheritAttrs
官网对:inheritAttrs的解释
如果你不希望组件的根元素有继承特性,你可以在组件的选项中设置 inheritAttrs: false。

解决办法inheritAttrs的使用

<template>
<div class="demo">
//动态绑定到需要的元素上
<input v-bind="$attrs" name="" id="">
</div>
</template> <script>
export default {
//表示不添加在组件的根元素上
inheritAttrs:false
//inheritAttrs 读音 [ ɪnˈherɪt] [in her t ATTRS】
}
</script>

vue获取子组件的实例$el、$attrs和inheritAttrs的使用的更多相关文章

  1. vue 父组件主动获取子组件的数据和方法 子组件主动获取父组件的数据和方法

    Header.vue <template> <div> <h2>我是头部组件</h2> <button @click="getParen ...

  2. Vue 父组件主动获取子组件的值,子组件主动获取父组件的值

    父组件主动获取子组件的值 1. 在调用子组件的时候定义一个ref-> ref="header"2. 在父组件中通过this.$refs.header.属性,调用子组件的属性, ...

  3. Vue父组件主动获取子组件的数据和方法

    Vue父组件主动获取子组件的数据和方法 https://www.jianshu.com/p/bf88fc809131

  4. vue父组件获取子组件页面的数组 以城市三级联动为例

    父组件调用子组件 <Cselect ref="registerAddress"></Cselect> import Cselect from '../../ ...

  5. vue.js 父组件主动获取子组件的数据和方法、子组件主动获取父组件的数据和方法

    父组件主动获取子组件的数据和方法 1.调用子组件的时候 定义一个ref <headerchild ref="headerChild"></headerchild& ...

  6. vue组件通信之父组件主动获取子组件数据和方法

    ref 可以用来获取到dom节点,如果在组件中应用,也可以用来获取子组件的数据和方法. 比如,我定义了一个home组件,一个head组件,home组件中引用head组件. 此时,home组件是head ...

  7. vue--父组件主动获取子组件的方法

    父组件主动获取子组件的方法和属性 第一步:调用自组件的时候,给自组建定义一个Header <v-header ref='headerInfo'></v-header> 第二步: ...

  8. vue3 template refs dom的引用、组件的引用、获取子组件的值

    介绍 通过 ref() 还可以引用页面上的元素或组件. DOM 的引用 <template> <div> <h3 ref="h3Ref">Tem ...

  9. 子组件获取父组件数据 propsDown, 父组件获取子组件数据 eventUp

    (一) popsDowm 三种方法获取父组件数据:被动获得(1):主动获取(2). 1.被动获得: 父组件:v-bind: 绑定变量参数和方法参数:子组件:props 接收参数.可以在模板中直接使用也 ...

  10. Vue 给子组件传递参数

    Vue 给子组件传递参数 首先看个例子吧 原文 html <div class="container" id="app"> <div clas ...

随机推荐

  1. 剖析CWE视图的层次定义和解析方式

    摘要:CWE做为软件缺陷分类的重要标准, 对安全研究.安全标准.缺陷管理起了重要的纽带作用.CWE通过编号的类型(类缺陷.基础缺陷和变种缺陷等)形成了多层次的缺陷类型划分体系.本文进一步剖析了CWE视 ...

  2. “数”驰天下,华为云DRS 高效支撑T3出行平稳迁移

    摘要:华为云DRS成功助力T3出行在规定时间内完成数十TB级全量数据的迁移. 数字化潮流浩浩汤汤,企业上云如火如荼,网约车行业也借助这一股东风展现出了蓬勃的生命力,因为它的高效便捷,吸引了越来越多的都 ...

  3. vue2升级vue3:vue3真的需要vuex或者Pinia吗?hooks全有了

    在写 <vue2升级vue3:TypeScript下vuex-module-decorators/vuex-class to vuex4.x>,建议新项目使用 Pinia,但是我的项目部分 ...

  4. ios安全加固 ios 加固方案

    ​ 目录 一.iOS加固保护原理 1.字符串混淆 2.类名.方法名混淆 3.程序结构混淆加密 4.反调试.反注入等一些主动保护策略 二 代码混淆步骤 1. 选择要混淆保护的ipa文件 2. 选择要混淆 ...

  5. PPT 插件

    https://www.aboutppt.com/ 小顽简报 https://www.yuque.com/wonvy/pptools/veu9yq https://pan.baidu.com/s/10 ...

  6. Netty ChannelFuture 监听三种方法

    以下是伪代码 方法一 前后代码省略 //绑定服务器,该实例将提供有关IO操作的结果或状态的信息 ChannelFuture channelFuture = bootstrap.bind(); this ...

  7. 阿里云Imagine Computing创新技术大赛正式开启!

    阿里云 Imagine Computing 创新技术大赛,是由阿里云与英特尔主办,阿里云天池平台.边缘云.视频云共同承办的顶级赛事,面向个人开发者和企业的边缘云领域算法及实时音视频应用类挑战. 本次创 ...

  8. kafka集群五、__consumer_offsets副本数修改

    系列导航 一.kafka搭建-单机版 二.kafka搭建-集群搭建 三.kafka集群增加密码验证 四.kafka集群权限增加ACL 五.kafka集群__consumer_offsets副本数修改 ...

  9. 启动vue项目失败,报错Failed at the node-sass@4.14.1 postinstall script.

    https://www.cnblogs.com/xiaodangshan/p/13061618.html

  10. 基于 SpringBoot + Vue3.2 + Element Plus 的后台管理系统

    简介 TANSCI 基于 SpringBoot + Vue3.2 + Element Plus 的后台管理系统. 包含基础模块:菜单管理.角色管理.组织管理.用户管理.字典管理.日志管理(操作日志.异 ...