vue父页面调用子页面及方法及传参,鼠标光标定位

项目场景:

vue父页面调用子页面及方法


问题描述

vue中父界面调用子界面及方法时界面可以调用,但是调用方法的时候第一次报错,但是关掉界面再次重新打开就没问题了


原因分析:

在我之前添加鼠标指针定位的时候,如果在当前页面可以直接定位,但是如果在el-dialog弹出框里展示定位鼠标光标的话就会实现不了,原因是需要设置setTimeout(() => { }, 200) 延迟因为我直接找的解决方案所以原因没有过于去看,但是我分析应该是方法执行的太快,在界面打开之前就已经获取了,但是界面没打开所以无法获取位置,导致方法失败,于是我加在了调用子界面方法上解决了


解决方案:

1.首先是将子界面引入到父界面然后使用components自定义组件

   (1) import CardRecharge from "../xxxxx/xxxxx.vue";

   (2) components: {
            CardRecharge,
        },

2.,调用子界面的代码,

  

 <el-dialog title="患者信息" v-model="patInfDialogVisible" width="80%" >
            <CardRecharge ref="pFication" :CARD_NO="select_Bed_Ary.CARD_NO"></CardRecharge>                
            <template #footer > 
                <span class="dialog-footer" style="align-items: ;">
                    <el-button size="default" type="success"  @click="pFicationOnSave" >确认</el-button>
                    <el-button size="default" @click="patInfDialogVisible = false">取消</el-button>
                </span>
            </template>
        </el-dialog>

3.这里是给子界面传入选择数据字段,需要配合第一步的:CARD_NO="select_Bed_Ary.CARD_NO"使用,这个是方法传参,也可以将数据放到缓存中传参

    const handleClick = function(row, event, column) {

_this.select_Bed_Ary.CARD_NO=row.CARD_NO,}

4.这里是调用子界面的方法

	const pFication =ref(null);
			const pFicationOnSave = function(){
				
				setTimeout(() => {
					_this.patInfDialogVisible=false;
					_this.getCardDate();
				}, 200)
			}
			const onAvatar=function(item,state){
				if(state == '1'){
					 _this.select_Bed_Ary=item;
					pFication.value.getEssentialInform()
					_this.patInfDialogVisible=true;
					pFication.value.ClearScreen()
				}else{
					_this.patInfDialogVisible=true;
//这里就是添加了延时调用自界面方法
					setTimeout(() => {
						pFication.value.getEssentialInform() 
					}, 200)
					
				}
			};

5.以上是父级界面代码。

子界面代码

1.使用props传值这个介绍可以看这个连接

vue中组件的props属性(详)_suoh's Blog的博客-CSDN博客_vue props

将父界面值传过来加到调用的方法作为传递的参数

然后使用语法糖暴露一下子页面的方法让父界面调用

    // 父组件调用子组件时的方法暴漏
            defineExpose(()=>{
                getEssentialInform,
                ClearScreen,
                Recharge
            }); 

以上就是vue3父界面调用子界面,传参的方法和遇到的问题的解决方案,只总结个人情况,解决参考

附加鼠标光标定位:

 

五、vue3.0之组件通信详解(defineProps、defineEmits、defineExpose)_arguments_zd的博客-CSDN博客_defineprops

 第三张图片是条件满足之后执行光标定位,我这里是当el-dialog弹出框打开的时候定位到某个输入框,根据需求设置

以上就是我的总结,感谢观看。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值