首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用carousel在Nuxt应用程序中抛出"Flickity is not defined“的自定义按钮

使用carousel在Nuxt应用程序中抛出"Flickity is not defined“的自定义按钮
EN

Stack Overflow用户
提问于 2021-10-15 13:11:43
回答 1查看 94关注 0票数 2

我正在尝试将我自己的自定义按钮连接到nuxt应用程序中的flickity carousel。在我的carousel组件中,我有以下代码

代码语言:javascript
复制
<template>
    <ClientOnly>
        <Flickity
            ref="flickity"
            :key="keyIncrementer"
            class="carousel"
            :class="{ 'carousel--active': active }"
            :options="computedOptions"
        >
            <slot />
        </Flickity>
    </ClientOnly>
</template>

<script>
export default {
  beforeCreate() {
      var flkty = new Flickity(".carousel");
      // previous
      var previousButton = document.querySelector('.button--previous')
      previousButton.addEventListener('click', function () {
          flkty.previous()
      })
      // next
      var nextButton = document.querySelector('.button--next')
      nextButton.addEventListener('click', function () {
          flkty.next()
      })
  },
  beforeDestroy() {
      window.removeEventListener('resize', this.debounceRefresh)
      nextButton.removeEventListener('click', function () {
          flkty.next()
      })
      previousButton.removeEventListener('click', function () {
          flkty.previous()
      })
  },
}
</script>

在我的plugins文件夹中有一个vue-flickity.js文件

代码语言:javascript
复制
import Vue from 'vue'
import Flickity from 'vue-flickity'

Vue.component('Flickity', Flickity)

无需尝试使用我自己的自定义按钮,旋转木马就可以正常工作。但是对于自定义按钮,我得到了一条错误消息ReferenceError Flickity is not defined,这一行是=>,var flkty = new Flickity(".carousel");Missing stack frames,我显然是做错了什么,但是什么呢?

EN

回答 1

Stack Overflow用户

发布于 2021-10-16 07:35:41

new Flickity()中使用Flickity时,假设Flickity构造函数(来自flickity package)是全局定义的(可能是由vue-flickity定义的),但事实并非如此。而且,flickityvue-flickity并不打算像这样同时使用。

要将vue-flickitynext/previous方法绑定为您自己的按钮的处理程序,请在调用this.$refs.flickity.next()/this.$refs.flickity.previous()的按钮上使用@click处理程序

代码语言:javascript
复制
<Flickity ref="flickity" class="carousel">...</Flickity>
<button @click="next">Next</button>
<button @click="prev">Prev</button>
代码语言:javascript
复制
export default {
  methods: {
    next() {
      this.$refs.flickity.next()
    },
    prev() {
      this.$refs.flickity.previous()
    },
  },
}

这实际上是来自vue-flickity usage docs的相同示例。

demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69585270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档