Vuejs2 从非Vue文件访问Vue应用程序(此)

Vuejs2 从非Vue文件访问Vue应用程序(此),vuejs2,vuex,Vuejs2,Vuex,我是vue新手(开始使用vue 2)我正在使用商店(vuex),我正在尝试实现一些东西。 基本上,我成功地安装了vue auth插件:我有这个.auth,我可以从.vue文件中调用它。 现在,使用store,我想通过从vue文件发出如下调用来调用userLogin函数: <script> export default { computed: { comparePasswords() { return this.password === this.passwor

我是vue新手(开始使用vue 2)我正在使用商店(vuex),我正在尝试实现一些东西。 基本上,我成功地安装了vue auth插件:我有这个.auth,我可以从.vue文件中调用它。 现在,使用store,我想通过从vue文件发出如下调用来调用userLogin函数:

<script>
export default {
  computed: {
    comparePasswords() {
      return this.password === this.passwordConfirm
        ? true
        : "Passwords don't match";
    }
  },
  methods: {
    userSignUp() {
      if (this.comparePasswords !== true) {
        return;
      }
      this.$store.dispatch("userSignUp", {
        email: this.email,
        password: this.password
      });
    }
  },
  data() {
    return {
      email: "",
      password: "",
      passwordConfirm: ""
    };
  }
};
</script>
感谢您的帮助

目前的想法是将实例作为参数传递给函数,如下所示:

  this.$store.dispatch("userSignUp", {
    email: this.email,
    password: this.password,
    auth: this.$auth  //added this line
  });
然后在存储->操作中,有效负载.auth将包含我的auth插件:

userLogin({ commit }, payload) {

  commit('setLoading', true)

  var redirect = payload.auth.redirect();
  payload.auth.login({
    body: payload, // Vue-resource
    data: payload, // Axios
    rememberMe: this.data.rememberMe,
    redirect: { name: redirect ? redirect.from.name : 'account' },
    fetchUser: this.data.fetchUser
  })
    .then(() => {
      commit('setUser', this.context)
      commit('setLoading', false)
      router.push('/home')
    }, (res) => {
      console.log('error ' + this.context);
      commit('setError', res.data)
      commit('setLoading', false)

    });
},

我不知道这是否是最好的做法,但我就是这样做到的。请随时提出建议。

尝试在index.js中使用
Vue.$auth
,它应该可以工作。

您的问题令人困惑,我什么都不懂。你说“在存储/索引中,我试图访问'this.$auth'…”哪个存储/索引?它应该是
Vue.$auth
,或者将
this.$auth
作为存储->操作的一个参数传递。@samayo是的,这是我想要做的。@Sphinx它不起作用,但是看到下面的答案,我必须将实例传递给store.action函数。
userLogin({ commit }, payload) {

  commit('setLoading', true)

  var redirect = payload.auth.redirect();
  payload.auth.login({
    body: payload, // Vue-resource
    data: payload, // Axios
    rememberMe: this.data.rememberMe,
    redirect: { name: redirect ? redirect.from.name : 'account' },
    fetchUser: this.data.fetchUser
  })
    .then(() => {
      commit('setUser', this.context)
      commit('setLoading', false)
      router.push('/home')
    }, (res) => {
      console.log('error ' + this.context);
      commit('setError', res.data)
      commit('setLoading', false)

    });
},