javascript - Nuxt.js:如何定义组件的mounted()中使用的常用方法,以及改变组件的数据

标签 javascript vue.js nuxt.js

我想如下在组件的mounted()中检测scroll事件,改变组件中使用的数据。

・组件

<script>
import checkScroll from '~/utils/checkScroll'

export default {
  ...
  data() {
    return {
      scrollPosition: 0
    }
  },
  mounted() {
    window.addEventListener(
      'scroll',
      checkScroll(this.scrollPosition, window.scrollY)
    )
  },
</script>

・utils/checkScroll.js

export default function checkScroll(scrollPosition, scrollY) {
  scrollPosition = scrollY
}

这个案例有两个问题

1.我想每次滚动都执行这个函数,但是这个函数只在第一次滚动时执行
2.组件内this.scrollPosition的值不变。

如果是这样,它将如何运作?

最佳答案

第一个问题不应该发生。如果你添加 eventListener 它将在你每次滚动时执行,我已经在本地检查它按预期工作。但是您应该将一个函数传递给事件监听器,但是您传递的是已经执行的函数。

你可以从它返回结果并做这样的事情

export default function checkScroll(event) {
  return window.scrollY;
}

mounted() {
    window.addEventListener("scroll", event => {
      this.scrollPosition = checkScroll(event);
    });
  }

这里是 CBS 的工作示例 https://codesandbox.io/s/0qjkoox68v

关于javascript - Nuxt.js:如何定义组件的mounted()中使用的常用方法,以及改变组件的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55369550/

相关文章:

使用 String 的 DefineProperty 的 Javascript getter 返回 null

javascript - 我怎样才能选择这些元素并包装它们?

javascript - vue.js 中的 Angular ng-container 等价物

vue.js - 我如何从 Vuex 的另一个商店调用 setter/getter ?

vue.js - vuetify 突然显示奇怪的图标

javascript - 使用 vuetify "<v-file-input>"上传之前预览图像?

vue.js - 如何在watch :$route for Nuxt/Vue中获取页面标题

javascript - Chart.JS 混合图表 - 条形图不显示

javascript - 如何使 html 中的单选框看起来像复选框并在选中时使它们具有 x ?

javascript - 为 Vue 应用程序上已编译元素设置默认根路径