鍍金池/ 問答/HTML/ vue如何監(jiān)聽符合v-if條件的dom元素渲染完畢

vue如何監(jiān)聽符合v-if條件的dom元素渲染完畢

vue如何監(jiān)聽符合v-if條件的dom元素渲染完畢,然后才進(jìn)行后續(xù)的操作,如果不監(jiān)聽拿不到符合條件的dom元素

回答
編輯回答
柒喵

在 v-if 后面的條件發(fā)生變化時(shí)調(diào)用 nextTick 設(shè)置回調(diào)函數(shù)即可。
比如:

<template>
    <div v-if="isDisplay">Example</div>
</template>

<script>
    export default {
        data() {
            return {
                isDisplay: false
            }
        },
        mounted() {
            this.$http({
                method: 'GET'
                url: 'api.test.com'
            }).then(res => {
                // 更新數(shù)據(jù)
                this.isDisplay = res.data.isDisplay;
                // 此時(shí) DOM 還沒有更新,設(shè)置回調(diào)函數(shù)
                this.$nextTick(function () {
                    // 此時(shí)已經(jīng)渲染完成
                });
            });
        }
    }
</script>
2017年6月3日 03:23
編輯回答
嫑吢丕
<template>
    <div v-if="isDisplay" @hook="mounted"="handleChildMounted">Example</div>
</template>

注意 mounted 不保證已經(jīng)被渲染, 在 handleChildMounted 中搭配 $nextClick 來保證子組件渲染結(jié)束.

2018年1月14日 15:20