return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('11111111');
try {
const query = uni.createSelectorQuery().in(this).select(`#${this.grid_id}`);
console.log('22222222222222');
query.boundingClientRect(data => {
console.log('获取元素尺寸');
console.log(data);
if (data.width) {
resolve(data);
} else {
reject();
}
}).exec();
console.log('33333333333333333');
} catch (error) {
console.error(error);
}
console.log('44444444444444');
}, 100);
})

- 发布:2025-10-06 18:16
- 更新:2025-10-06 18:16
- 阅读:10
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 11
HBuilderX类型: 正式
HBuilderX版本号: 4.76
手机系统: Android
手机系统版本号: Android 10
手机厂商: 华为
手机机型: vivo Y52s
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
如上所述
如上所述
预期结果:
获取节点尺寸
获取节点尺寸
实际结果:
无法获取并报错
无法获取并报错
bug描述:
用v-if
做登录判断,登录后显示指定内容,但是需要获取节点的尺寸来控制大小,所以使用了uni.createSelectorQuery()
来获取节点尺寸,但是总是会报错,并且获取不到真实的尺寸
如果去掉这个v-if
判断,那就没有问题,也不会报错,但这不符合逻辑啊。
搜索网上相关资料,用setTimeout
解决,完全没有用,报错后也无法捕获,代码执行到query.boundingClientRect
里面就停止并报错了
Error: Not Found:Page[3][-1,22] at view.umd.min.js:1
0 个回复