gpt4 book ai didi

javascript - VanillaJS 到 VueJS 错误 : bad element for Flickity: carousel

转载 作者:行者123 更新时间:2023-11-28 17:10:50 25 4
gpt4 key购买 nike

我正在尝试获取this Flickity example (CodePen) 在 VueJS 组件中工作。

HTML

<div class="carousel">
<div class="carousel-cell"></div>
<div class="carousel-cell"></div>
<div class="carousel-cell"></div>
<div class="carousel-cell"></div>
<div class="carousel-cell"></div>
</div>

JS

 var flkty = new Flickity('.carousel');

flkty.on( 'dragStart', function() {
console.log('dragStart');
});

我收到此错误:

bad element for Flickity: carousel

我的不工作版本:

JS数据()

import Flickity from 'flickity'
var flkty = new Flickity('.carousel')
export default {
data () {
return {
flickityOptions: {
dragThreshold: 50,
initialIndex: 1,
prevNextButtons: false,
pageDots: false,
wrapAround: false,
hash: true,
percentPosition: false
},

JS挂载()

  mounted () {
flkty.on('dragStart', function () {
this.stageDragging = true
console.log('stageDragging: ' + this.stageDragging)
})
flkty.on('dragEnd', function () {
this.stageDragging = false
console.log('stageDragging: ' + this.stageDragging)
})

如何使用this Flickity example在 VueJS 组件中?

最佳答案

在您的 <script> 中部分,JavaScript 在文档中呈现模板之前执行,因此 Flickity 将无法找到 .carousel如果在钩子(Hook)之外调用。 Vue 实例有 mounted() lifecycle hook当它的模板呈现时被调用,这是您应该创建 Flickity 轮播的地方:

// const flkty = new Flickity(...) // DON'T DO THIS HERE
export default {
mounted() {
this.$nextTick(() => {
const flkty = new Flickity(...)
// ...
});
}
}

此外,不要传递 .carousel类名到 Flickity,传递 ref .carousel元素以避免抓取意外的 .carousel文档中的元素(例如,如果您有多个组件实例)。

// template
<div ref="carousel">

// script
new Flickity(this.$refs.carousel)

demo

关于javascript - VanillaJS 到 VueJS 错误 : bad element for Flickity: carousel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54483754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com