1***@qq.com
1***@qq.com
  • 发布:2024-08-26 16:35
  • 更新:2024-10-29 10:26
  • 阅读:93

createIntersectionObserver对循环便利出来的数据,有时无法监听

分类:HBuilderX

我对ucharts图标使用此方法

<template>  
    <view class="ceshi">  
        <view :class="`charts-box charts-box${myID}`" :id="myID">  
            <qiun-data-charts type="mix" :opts="opts" :chartData="chartData" :canvas2d="true" :onmouse="false"  
                :animation='true' :tooltipShow='true' @error='errorU' loadingType="0" @complete="complete" />  
        </view>  
    </view>  
</template>  

<script>  
    let observer = null;  
    import {  
        UformatTime  
    } from '@/utils/util/index.js'  
    export default {  
        props: {  
            myID: {  
                type: Number,  
                default: 0  
                        }  
        },  
        data() {  
            return {  
            };  
        },  
        mounted() {  
            observer = uni.createIntersectionObserver(this);  
            observer.relativeTo('.scroll-Y').observe(`.charts-box${this.myID}`, (res) => {  
                if (res.intersectionRatio > 0) {  
                    this.getServerData();  
                }  
                console.log(`observe: .charts-box${this.myID}`, res)  
                //   
            })  
        },  
        onUnload() {  
            if (observer) {  
                observer.disconnect()  
            }  
        },  
        methods: {  
            complete(){  
                console.log(`${this.myID}已生成`)  
                this.$nextTick(()=> {  
                console.log('111')  
                    observer.disconnect()  
                })  
            },  
            errorU(e) {  
                        },  

        }  
    };  
</script>  

<style scoped>  
    /* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */  
    .ceshi {  
        min-height: 1px;  
        width: 100%;  
        height: 100%;  

    }  

    .charts-box {  
        min-height: 1px;  
        width: 100%;  
        height: 100%;  
        /* border: 1px solid red; */  
    }  
</style>

无报错但是,每次循环最底部的数据无法触发导致每个循环有一个图渲染不出来

2024-08-26 16:35 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者) - 11

我发现是在

complete(){  
                console.log(`${this.myID}已生成`)  
                this.$nextTick(()=> {  
                // console.log('111')  
                    // observer.disconnect()  
                })  
            },

这里不去注销 observer.disconnect() 事件就可以触发了,但是没有触发 这是因为什么原因呢, complete没有提前触发的情况

1***@qq.com

1***@qq.com (作者) - 11

官方会回我么。

5***@qq.com

5***@qq.com

有解决吗??确实存在多个元素 循环监听 失效的情况。

要回复问题请先登录注册