Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Glide warn]: Root element must be a existing Html node #57

Open
M-Barari opened this issue Nov 16, 2020 · 0 comments
Open

[Glide warn]: Root element must be a existing Html node #57

M-Barari opened this issue Nov 16, 2020 · 0 comments

Comments

@M-Barari
Copy link

i'm using vue-glide-js and have a get this error on one of my pages when route change. for example when i hit that page on url or refresh that page, everything is fine! but when go to that page via nuxt-link (router-link) i get [Glide warn]: Root element must be a existing Html node and selectorQuery of null .

<template>
    <div class="full_width mb-5">
        <div :style="sliderW">
            <v-skeleton-loader v-if="compSkeleton" type="image" class="skel" />
            <vue-glide class="slider-glide" v-bind="carouselOptions" ref="slider" @glide:mount-after="mm()" :key="key" :style="sliderVisibility">
                <vue-glide-slide style="position:relative; min-height: 20px;" v-for="(item,index) in items" :key="item+index">
                    <div class="slide_wrapper">
                        <a :href="slideLink(item.link)">
                            <img :src="item.imgLg" class="img-responsive slide_img" :alt="slideTitle(item.title)">
                        </a>
                    </div>
                </vue-glide-slide>
            </vue-glide>
        </div>
    </div>
</template>
<style>
.skel{
    height: 100%;
    position: absolute;
    width: 100%;
    background: #ffffff;
    z-index: 1;
    border-radius: 0px !important;
}
.v-skeleton-loader__image{
    height: 100%;
}
</style>
<script>
import skeletonhomeslider from "~/components/global/skeletons/skeletonhomeslider"
export default {
    props:['options'],
    components:{
        'skeletonhomeslider': skeletonhomeslider
    },
    data(){
        return{
            items: [],
            compSkeleton: true,
            imgSkeleton: true,
            key: 1,
            sliderVisibility: 'visibility:hidden;'
        }
    },
    computed:{
        skeletonHeight(){
            return this.$vuetify.breakpoint.width/3
        },
        sliderW(){
            return `width:100%;position:relative;min-height:${this.$vuetify.breakpoint.width/3}px;`
        },
        carouselOptions(){
            return{
                direction: this.lang.dir || process.env.SITE_DIRECTION,
                type: 'carousel',
                autoplay: 3000,
                hoverpause: true,
                bound: false,
                rewind: true,
                perView: 1,
                peek: { before: 0, after: 0 },
                bullet: true,
                gap: 0
            }
        },
    },
    methods:{
        mm(){
            setTimeout(() => {
                this.compSkeleton = false
                this.sliderVisibility = '';
            }, 1000);
        },
        slideLink(link){
            if(link && link !== 'null'){
                return link
            }
            return '#'
        },
        slideTitle(title){
            if(title && title !== 'null'){
                return title
            }
            return process.env.SITE_TITLE
        },
        imgLoaded(){
            this.imgSkeleton = false
        }
    },
    async fetch(){
        let res = await this.axiosFetch(`homelist/list/${this.options.item.id}/0/1`)
        if(this.resOk(res.status)){
            this.items = res.data
        }
    },
    created(){
        this.compSkeleton = true
    },
    mounted(){
        setTimeout(() => {
            // this.compSkeleton = false
        }, 1000);
    }
}
</script>

and one more thing. the code is for my slider component which i have two of it! one for desktop and one for mobile that i import base on device. the mobile one has class slide-glide-m on <vue-glide>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant