物质化的CSS触发器在VUE JS中没有起作用



我在我的VUE JS项目中使用了css的旋转频率元素。当我路由带有轮播元件的VUE实例时,它不会显示旋转频率元件。当我刷新页面时,它显示了轮播元素。我尝试了所有Vue实例生命周期钩子,但它不起作用。该解决方案是什么?

请注意,我已经包含了编译和缩小的CSS和JavaScript in index.html。

<template>
<div class="carousel">
    <a class="carousel-item" href="#one!">1</a>
    <a class="carousel-item" href="#two!">2</a>
    <a class="carousel-item" href="#three!">3</a>
    <a class="carousel-item" href="#four!">4</a>
    <a class="carousel-item" href="#five!">5</a>
</div>
</template>
<script>
export default {
    name: 'Home',
    created() {
        document.addEventListener('DOMContentLoaded', function() {
            var elems = document.querySelectorAll('.carousel');
            var instances = M.Carousel.init(elems, {
                fullWidth: true,
                indicators: true
            });
        });
    }
}
</script>

不要使用DOMContentLoaded事件。由于这个原因,Vue已经具有生命周期方法。

export default {
    name: 'Home',
    mounted() {
        var elems = document.querySelectorAll('.carousel');
        var instances = M.Carousel.init(elems, {
            fullWidth: true,
            indicators: true
        });
    }
};

如果您仅使用脚本标签

,也需要定义M

//vue.config.js

module.exports = {
  chainWebpack: config => {
    config.externals({
      'M'
    })
  }
}

或从NPM和import M from 'materialize-css'下载脚本。

最新更新