javascript - vuejs slick 不适用于 v-for

标签 javascript vue.js vuejs2 vue-component

vue-slick 可以很好地处理静态内容。但是当我尝试循环播放 user.slick 的播放列表时,它不起作用。

html部分:

<template>
    <slick ref="slickone" :options="slickOptions">
        <div v-for='playlist in user_playlists'>
            <a href="#">
                <img :src="playlist.image">
                <p>Playlist Name</p>
            </a>
        </div>


    </slick>
</template>

脚本部分:

<script>
    import Slick from 'vue-slick';
    import './node_modules/slick-carousel/slick/slick.css';
    import './node_modules/slick-carousel/slick/slick-theme.css';
    export default {
        data() {
            return {
                user_playlists: [],
                slickOptions: {
                    infinite: true,
                    slidesToShow: 5,
                    slidesToScroll: 1,
                    autoplaySpeed: 5e3,
                },
            };
        },
        methods: {
            getUserPlaylists() {
                this.$http.get('api/user_playlists/user-playlists')
                        .then(response => {
                            this.user_playlists = response.body.data;
                            this.$refs.slickone.reSlick();
                        });
            },
            updated() {
                this.reInit();
            },
            reInit() {
                this.$refs.slickone.reSlick();
            },
        },
        components: {
            'slick': Slick,
        },
        watch: {
            profileData() {
                this.getUserPlaylists();
            },
            user_playlists() {
                this.reInit();
            }
        }
    }
</script>

我已经检查了文档并使用了 this.$ref.slickone.reSlick() 但它仍然无法正常工作。

最佳答案

我有类似的问题,但我只更新了一次状态。对我来说解决方案是:

    beforeUpdate() {
        if (this.$refs.slick) {
            this.$refs.slick.destroy();
        }
    },
    updated() {
        this.$nextTick(function () {
            if (this.$refs.slick) {
                this.$refs.slick.create(this.slickOptions);
            }
        });
    },

也许这对你有帮助。

关于javascript - vuejs slick 不适用于 v-for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46487333/

相关文章:

php - Javascript switch 不接受传递的变量

Javascript/Google Apps 脚本比较 2 个数组,返回不匹配的项目

javascript - Symfony app_dev.php install\DOMDomain 错误

d3.js - 将 Vue.js v-on 事件添加到 D3 SVG 元素

javascript - 从父组件执行子(组件)函数

javascript - vue中如何在localstorage中添加值

c# - 如何获取 asp.net 页面上元素的样式

javascript - nextTick : "TypeError: Cannot read property ' key' of undefined"in vue 错误

javascript - 我如何修复 Vue JS 警报

javascript - 无法使用输入更新 v 模型