我正在try 将JQuery插件owl carousel添加到使用Vuejs呈现的列表中.

HTML

<h4>1. Vuejs rendered items with OWL Carousel (not working)</h4>
<div id="user" class="owl-carousel">
    <div class="item" v-for="user in users">{{ user.name }}</div>
</div>

<h4>2. Pure HTML with OWL Carousel (working)</h4>
<div class="owl-carousel">
    <div class="item">Sunny</div>
    <div class="item">Michel</div>
    <div class="item">Daneil</div>
    <div class="item">Sony</div>
</div>

JS

var list = new Vue({
    el: '#user',
    data: {
        users: []
    },
    methods: {
        listUsers: function() {
            var users = [
            {
                id: 1,
                name: 'John'
            },
            {
                id: 2,
                name: 'Deo'
            },
            {
                id: 3,
                name: 'Anjela'
            },
            {
                id: 4,
                name: 'Samantha'
            }
            ];
            this.$set('users', users);
        },

        installOWLcarousel: function() {
            $('.owl-carousel').owlCarousel();
        }
    },
    ready: function() {
        this.listUsers();
        this.installOWLcarousel();
    }
});

你可以从以下位置找到完整的代码:https://jsfiddle.net/v18yjmuq/12/

我觉得JQuery在Vuejs呈现列表之前已经完成了执行.如何避免这个问题?在为循环项完全呈现Vuejs之后,我可以运行JQuery吗?

推荐答案

当使用需要DOM准备就绪的jQuery插件时,应该使用Vue.nextTick.

来自vue.js文档:

将回调延迟到下一个DOM更新周期之后执行.使用

在您的情况下,应该使用ready()方法的以下实现:

ready: function() {
    this.listUsers();
    Vue.nextTick(function () {
        this.installOWLcarousel();
    }.bind(this))
 }

编辑:对于Vue 2,使用mounted()created()

Vue.js相关问答推荐

如何禁用Vuetify v—stepper操作按钮

将媒体源/流绑定到视频元素 - Vue 3 组合 API

两个div元素之间的vue2过渡

拖入 vue2-google-map 后如何获取标记位置?

Vue-tables-2(vuex)react性不起作用

我是否必须在 Vue 3 中使用 Composition API,还是仍然可以使用Vue 2的方式工作?

在 Vue.js 中动态挂载单个文件组件

CLI 3 - 如何为 CSS/Sass 创建vendor bundle ?

VueJS 组件中的图像未加载

单击链接会更改 url,但不会更改页面上的内容/数据

v-for 中的 VueJS 插槽

NuxtServerInit 在 Vuex 模块模式下不起作用 - Nuxt.js

v-for 如何在继续之前判断未定义的列表

我可以修改 Vue.js VNodes 吗?

在组件之间共享数据

如何异步验证 Vuetify 文本字段?

在 Vue JS 组件中使用 Laravel 路由的最佳方法是什么

在vue中单击时如何模糊元素

将鼠标悬停在 TailwindCSS 中的 div 上时显示按钮

vue-cli@3 没有可用于依赖类型的模块工厂:CssDependency