yxinlai
yxinlai
  • 发布:2019-03-27 23:46
  • 更新:2019-06-11 18:56
  • 阅读:1416

【报Bug】自定义组件onReady(),v-if 渲染组件元素,无法获得

分类:uni-app

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)
[内容]

自定义组件中有v-if条件渲染的组件,在onready中获取v-if条件渲染的对象高度,无法获取。

<template>  
	<view >  
		<view v-if="show">  
			<view id="123">测试内容</view>  
		</view>  
	</view>  
</template>  
  
<script>  
  
export default {  
         data() {  
			return {  
				show:true  
			};  
		},  
          onReady() {  
                  uni.createSelectorQuery().in(this).select('#123').boundingClientRect().exec((ret) => {  
					this.height = ret[0].height  
					console.log(this.height)  
				});  
          }  
}  
</script>

运行报错:

null is not an object (evaluating 'ret[0].height')

重现步骤

[步骤]
[结果]
[期望]
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX]
[IDE版本号]
[windows版本号]
[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序]
[运行端版本号]

App运行环境说明

[Android版本号]
[iOS版本号]
[手机型号]
[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
[App安装包或H5地址]
[可重现代码片段]

联系方式

[QQ]

2019-03-27 23:46 负责人:无 分享
已邀请:
诗小柒

诗小柒

v-if 改为v-show v-if 会移除元素的,当然获取不到,v-show只是display:none,非要用v-if 那就加点延时吧

  • yxinlai (作者)

    加延时,无效


    2019-03-28 15:40

wailen

wailen

请问你解决了吗

DCloud_UNI_FXY

DCloud_UNI_FXY

HBuilderX 版本号多少?
运行到哪个平台?

  • wailen

    应该是app,h5都可以


    2019-06-12 10:10

  • DCloud_UNI_FXY

    回复 wailen: 更新最新版本 HBuilderX,我这里测试没有发现此问题,若还有问题,提交一份可重现的 demo 工程


    2019-06-12 13:42

该问题目前已经被锁定, 无法添加新回复