首页 > 其他分享 >vxe-弹窗初始化激活选中Vxe-Table表格中第一行input输入框

vxe-弹窗初始化激活选中Vxe-Table表格中第一行input输入框

时间:2024-07-19 09:56:21浏览次数:13  
标签:Vue 渲染 vxe 输入框 Modal 组件 input 弹窗 页面

1.实现效果

2.Modal弹窗的渲染过程

一、Vue组件的生命周期

Vue组件从创建到销毁会经历一系列的生命周期钩子,这些钩子为开发者提供了在不同阶段插入自定义逻辑的机会。在Modal弹窗的上下文中,这些生命周期钩子同样适用。

  1. beforeCreate:组件实例初始化之后,数据观测和事件配置之前被调用。此时Modal弹窗的模板和数据都还未被处理。

  2. created:组件实例创建完成后被调用。此时数据已经初始化,但还没有开始DOM编译和挂载。对于Modal弹窗来说,这意味着其数据已经就绪,但弹窗本身还未渲染到页面上。

  3. beforeMount:组件挂载之前被调用,此时组件的模板已经编译完成,但尚未挂载到页面上。对于Modal弹窗,这意味着其HTML结构已经准备好,但还未显示。

  4. mounted:组件挂载完成后被调用,此时组件已经完全被渲染到页面中。对于Modal弹窗,这表示弹窗已经显示在用户面前。

二、Modal弹窗的渲染过程
  1. 初始化:当Vue实例被创建时,Modal弹窗(作为Vue组件)也会相应地被初始化。这包括数据的初始化、模板的编译等。

  2. 挂载:在mounted生命周期钩子被调用时,Modal弹窗的虚拟DOM会被渲染成真实的DOM,并挂载到页面的指定位置(通常是某个容器元素内)。

  3. 显示与隐藏:Modal弹窗的显示与隐藏通常通过改变其CSS样式(如display属性)或Vue的v-ifv-show指令来实现。这些操作可以在Vue的方法中定义,并通过事件或计算属性来触发。

三、与页面渲染的顺序关系
  1. 页面渲染:Vue页面渲染通常遵循Vue组件的生命周期顺序,从根组件开始,逐级向下渲染子组件。

  2. Modal弹窗的渲染时机:Modal弹窗作为页面上的一个组件,其渲染时机取决于它在页面组件树中的位置以及相关的逻辑控制。如果Modal弹窗是页面组件的一个子组件,那么它将在页面组件挂载之后(即页面渲染的一部分)进行渲染

  3. 动态渲染:如果Modal弹窗的显示是基于某些条件或用户交互的(如点击按钮后显示),那么它的渲染将发生在这些条件满足或用户交互发生时。此时,Vue会重新渲染相关的组件部分,包括Modal弹窗。

3.具体实现 

3.1 父组件

v-if判断 销毁与创建弹窗的dom,避免子组件弹窗在页面挂载后弹窗也进行渲染

<ReportDetail ref="Detail" v-if="detailVisible" :visible="detailVisible" @Detail="Detail" ></ReportDetail>

使用异步执行延迟回调 

 Detailr(row) {
        this.detailVisible = true
        this.$nextTick(() => {
            this.$refs.Detail.openDetail(row,.........)
        });
    },
3.2 子组件

 表格内设置使用 通过判断是否第一行 default 默认展示 ref进行标记vxe-input输入框 

表格其余行启用 edit 编辑  表头编辑模式开启属性

:edit-config="{trigger: 'click', mode: 'cell'}"
<vxe-column field="detail" title="说明" min-width="100">
  <template #default="{ row ,rowIndex }">
   <span v-if="rowIndex!=0"> {{row.detail}}</span>
<vxe-input ref="inputRef" v-if="rowIndex==0"  v-model="row.detail" type="text"></vxe-input>
  </template>
  <template #edit="{ row }">
    <vxe-input v-model="row.detail" type="text"></vxe-input>
  </template>
</vxe-column>

挂载到mounted中 设置0.5秒延时 ,等待vxe-table内表格渲染完成再利用input焦点聚集激活focus() 

 mounted() {
      setTimeout(() => {  
        this.$refs.inputRef.focus();
        }, 500);
  },

标签:Vue,渲染,vxe,输入框,Modal,组件,input,弹窗,页面
From: https://blog.csdn.net/2301_76671906/article/details/140539021

相关文章

  • vxe-grid 自定义工具栏,去掉原来的工具栏
    1、如果要自定义那么就少不了slots了2、代码<vxe-gridref="tableRef"v-bind="gridOptions":folding-all="true"><template#toolbar_buttons><Selectv-model:value="searchForm.fieldname&......
  • Figma数值输入框支持拖拽调整功能实现
    最近再研究Figma的一些功能设计,对其中的数值输入框可以直接鼠标拖拽的这个设计印象非常深刻.这里用了其他网友的一张动态截图演示一下效果.实际这个拖拽的功能不止看到的这么简单,在深度研究使用之后,发现这个拖拽可以无限的拖动,当鼠标超出网页后会自动回到另一端然后继......
  • input输入框 防抖
    1什么是防抖防抖:当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始计时。为了避免用户在输入过程中,还没输入完,下面搜索框就一直频繁的在搜索,体验很差。2防抖解决方案首先需要把input的双向绑定v-mode拆......
  • 更改文件导致MalformedInputException
    1.异常复现工具及组件版本IDE:IDEA2023.3.2(UltimateEdition)JDK:11SpringBoot:2.7.8报错场景复现编辑application.yml文件后,SpringBoot项目启动失败,报错java.nio.charset.MalformedInputException错误信息如下:org.yaml.snakeyaml.error.YAMLException:java.nio.charse......
  • Python教程:input接受输入
    Python中input()函数接受一个标准输入数据,返回为字符类型。无论是int、float、list等,在输入的时候,都是以字符串存储。使用语法:a=input([prompt])#提示信息等待用户输入1.接受一个值a=input('input:')#input:100type(a)#strb=input()#abctype(b)#s......
  • java InputStream read使用及读取数据注意
    publicabstractintread()throwsIOException;从输入流中读取下一个字节的数据。值字节以int的形式返回,范围在0-255之间。如果由于到达流的末尾而没有字节可用,则返回值-1。此方法会一直阻塞,直到输入数据可用、检测到流结束或抛出异常为止。 publicintread(byteb[],i......
  • 实现一个 AI 聊天输入框:从基础到高级的指南
    引言随着人工智能和自然语言处理(NLP)技术的快速发展,基于AI的聊天系统变得越来越普遍。无论是简单的问答系统还是复杂的客服聊天机器人,聊天输入框都是用户与系统交互的关键组件。本文将详细介绍如何实现一个功能丰富的AI聊天输入框,从基础组件到高级功能,包括用户输入处理、界......
  • WPF customize DelegateCommand via implementation interface System.Windows.Input.
    publicclassDelCmd:ICommand{privatereadonlyAction<Object>execute;privatereadonlyPredicate<Object>canExecute;publicDelCmd(Action<object>executeValue,Predicate<object>canExecuteValue){execut......
  • Unity入门之重要组件和API(4) : Input
    前言Input类主要处理用户输入设备相关操作;输入设备包括鼠标、键盘、触屏、手柄、陀螺仪(重力感应)。1.鼠标1.1鼠标在屏幕的位置print(Input.mousePosition);1.2检测鼠标输入0-左键1-右键2-中键if(Input.GetMouseButtonDown(0)){ print("鼠标按下");}if(Input......
  • 微信小程序开发--获取输入框input的值的两种方式
    在微信小程序中,可以通过以下几种方式来获取输入框的值:方式1:使用bindinput绑定输入事件,通过event.detail.value获取输入框的值。具体操作如下:<inputbindinput="onInput"placeholder="请输入内容"></input>Page({onInput:function(event){varvalue=event.detail;......