如何从另一个函数访问全局函数(Vue.prototype.myFn)?

Sye*_*yed 3 javascript vue.js vuejs2 nuxt.js

我在一个 nuxt.js 项目中并尝试创建全局函数,但出现此错误:

Cannot read property '$toggleBodyClass' of undefined
Run Code Online (Sandbox Code Playgroud)

这是我的代码(插件/globals.js):

import Vue from 'vue';

Vue.prototype.$toggleBodyClass = (addRemoveClass, className) => {
  const elBody = document.body;

  if (addRemoveClass === 'addClass') {
    elBody.classList.add(className);
  } else {
    elBody.classList.remove(className);
  }
};

Vue.prototype.$setModalBackdrop = () => {
  this.$toggleBodyClass('addClass', 'modal-open'); // ** How to make this work? **
};
Run Code Online (Sandbox Code Playgroud)

当我在我的组件 (components/myComp.vue) 中使用它时,这工作得很好:

<template>
  <div>
    <button @click="handelClick">Toggle Class</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleClick() {
      this.$toggleBodyClass('addClass', 'modal-open');
    },
  },
};
</script>
Run Code Online (Sandbox Code Playgroud)

请帮忙,谢谢。

Sam*_*ult 11

只需更改您的代码

this.$toggleBodyClass
Run Code Online (Sandbox Code Playgroud)

Vue.prototype.$toggleBodyClass
Run Code Online (Sandbox Code Playgroud)