鍍金池/ 問答/HTML/ 定義了一個(gè)vue全局方法,不能再vuex中進(jìn)行調(diào)用

定義了一個(gè)vue全局方法,不能再vuex中進(jìn)行調(diào)用

定義了一個(gè)vue的全局方法,但是可以在組件中調(diào)用,確不能再vuex中調(diào)用,提示undefined

Vue.prototype.ajax = function (){
    alert('aaaaaaa');
};

var store = new Vuex.Store({
    state: {
        user: {},
    },
    actions: {
        signout: function(context) {
            this.ajax();
            //undefined
        }
    }
});
回答
編輯回答
失魂人

你把函數(shù)定義在 Vue 的原型鏈上,只能在 Vue 的實(shí)例里才能取到這個(gè)方法。

vue組件 是一個(gè)Vue 的實(shí)例,所以你當(dāng)然能在這里調(diào)用到 ajax 方法。

而,vuex 只是一個(gè) vue插件,在 vuex 里的 this 不是指向 vue實(shí)例的,所以肯定是取不到 ajax 方法的。

建議:把 ajax 函數(shù)放在一個(gè)單獨(dú)的模塊里定義,這樣你在項(xiàng)目的不同地方,可以通過 import 的方式引入使用。

2017年10月23日 17:38
編輯回答
悶騷型

你的方法定義在 Vue 原型鏈上,在 Vuex 實(shí)例中當(dāng)然用不到呀。

另外這個(gè)方法也不需要掛在 Vue 上,直接寫個(gè)函數(shù) import 進(jìn)來用就好了。

2018年1月3日 20:49
編輯回答
寫榮

踩問題的哥們,給提點(diǎn)建議唄,別光踩啊

2018年5月1日 00:40
編輯回答
礙你眼

這里的this怎么可能是Vue是實(shí)例,而且Vuex也不是這樣用的。。。

2018年7月3日 06:48