【发布时间】:2021-09-11 07:19:15
【问题描述】:
我一直在我的 Vue 3 应用程序中使用 Flickity,当我使用带有静态单元格的硬编码 HTML 轮播时,它可以正常工作。但是,我需要在运行时以编程方式添加单元格,但我无法让 Flickity API 正常工作。
我正在尝试遵循 append() 示例,但我收到了错误:
flickity.js?1385:72 Bad element for Flickity: .carousel
在运行时在我的检查器中。我尝试遵循解决方案here 和here,但都未能成功运行。看起来这是由于 Flickity 库上的 TypeScript 错误造成的。我还安装了@types/flickity,仅供参考。
我可以做些什么来修复下面的append 逻辑?
<template>
<div class="row">
<div class="col d-block m-auto payment-option">
<flickity ref="carousel" :options="flickityOptions">
</flickity>
</div>
</div>
</template>
<script lang="ts">
import {defineComponent} from "vue";
//import Flickity from 'vue-flickity/src/flickity.vue';
import Flickity from 'flickity'
export default defineComponent({
name: "PageName",
components: {
Flickity
},
data() {
return {
flickityOptions: {
initialIndex: 3,
prevNextButtons: false,
pageDots: true,
wrapAround: true
}
};
},
methods: {
createBankAccountCarousel(flkty: Flickity) {
flkty.append(this.makeFlickityCell())
},
makeFlickityCell() {
const cell = document.createElement('div');
cell.className = 'carousel-cell'
cell.textContent = "Hi"
return cell
}
},
mounted() {
let flkty = new Flickity(this.$refs.carousel)
this.createBankAccountCarousel(flkty)
}
});
</script>
【问题讨论】:
-
不知道 flickity,但不是打字稿,它抱怨找不到元素,尝试将 class="carousel" 添加到 flickity 组件。不确定这是否有帮助。
标签: javascript typescript vue.js vuejs3 flickity