Vuejs2 从非Vue文件访问Vue应用程序(此)
我是vue新手(开始使用vue 2)我正在使用商店(vuex),我正在尝试实现一些东西。 基本上,我成功地安装了vue auth插件:我有这个.auth,我可以从.vue文件中调用它。 现在,使用store,我想通过从vue文件发出如下调用来调用userLogin函数: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
<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)
});
},