uni.app的uni-popup:this.popup.disableMask is not a function

文章指出在popup.js中由于uniPopup和UniPopup的大小写不一致导致getParent方法返回false,从而影响uni-popup-dialog组件的正常工作。解决方案是将name参数修改为UniPopup,并调整组件内部对this.popup的调用方式,以避免报错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 出现这个错误是因为popup.js中getParent()方法中name是'uniPopup',u是小写的,而下面parent.$options.name获取到的是的是'UniPopup',而所有返回的是false,this.popup是false,里面什么都没有

	
//这个时popup.js文件,uni-popup-dialog就是引入的这个
created(){
        //this.popup为false
		this.popup = this.getParent()
	},
	methods:{
		/**
		 * 获取父元素实例
		 */
		getParent(name = 'uniPopup') {
			// debugger
			let parent = this.$parent;
			let parentName = parent.$options.name;
            
			while (parentName !== name) {
				parent = parent.$parent;
                //这里的判断是parent为空时直接返回了false,所有无法执行到return 
				if (!parent) return false
				parentName = parent.$options.name;
			}
			// debugger
            //无法运行到这里,所有return无法执行
			return parent;
		},
	}
}
//所以uni-popup-dialog内无法访问到this.popup数据

看详情

 

//只需要将name = 'uniPopup'修改为name = 'UniPopup'
//另外可在uni-popup-dialog.vue文件中将
//"this.popup.disableMask()"和"this.popup.closeMask()"
//替换为"this.popup.mkclick = false;"和"this.popup.maskShow = false;"
//就不会报错了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值