Javascript Vue:从实例范围外的函数访问Vue实例

Javascript Vue:从实例范围外的函数访问Vue实例,javascript,vue.js,Javascript,Vue.js,这是我的数据对象的一小部分。基本上,它用于创建导航菜单。在导航菜单中有一些按钮可以触发函数,我想我应该在数据对象中创建函数,因为这是最清晰的方法 但是,此不会返回vue对象。因此,除了让虚拟机成为全球范围的一部分之外,我还不知道如何做到这一点 有什么想法吗 const data = { login: { title: "Log in", icon: "fa fa-sign-in", action: function () { console.log("Lo

这是我的数据对象的一小部分。基本上,它用于创建导航菜单。在导航菜单中有一些按钮可以触发函数,我想我应该在数据对象中创建函数,因为这是最清晰的方法

但是,
不会返回vue对象。因此,除了让虚拟机成为全球范围的一部分之外,我还不知道如何做到这一点

有什么想法吗

const data = {
  login: {
    title: "Log in",
    icon: "fa fa-sign-in",
    action: function () {
      console.log("Log in");
      // This is where I want to access the vm, e.g. like this:
      // this.$root.showLoginBox();
    }
  }
}

定义Vue实例将在该实例范围之外使用的函数似乎是一种不好的做法

但是,如果确实需要将
数据
对象保留在原处,则可以从Vue实例中将
绑定到函数:

const data = {
  login: {
    action: function () {
      console.log(this)
    }
  }
}

new Vue({
  created() {
    data.login.action.bind(this)();
  }
})

在您的vue实例调用中
data.login.action.bind(this)(
这非常有效,谢谢!:D只需要做一个小小的修改,bind函数实际上返回了函数的一个新版本,所以我想要的实际上是data.login.action=data.login.action.bind(这个),但是如果没有您的帮助,我是无法实现的,所以谢谢:)