Javascript 使用Vue调用同一组件的方法
我有一个带有两个方法的vue组件,Javascript 使用Vue调用同一组件的方法,javascript,vue.js,Javascript,Vue.js,我有一个带有两个方法的vue组件,deleteActivat调用一个axios.get方法,然后调用另一个vue方法reloadactivats: methods: { reloadActivitats: function () { this.$store.dispatch(actionTypes.FETCH_ACTIVITATS) }, deleteActivitat: (activitat) => { crud.delete(activitat).then(
deleteActivat
调用一个axios.get方法,然后调用另一个vue方法reloadactivats
:
methods: {
reloadActivitats: function () {
this.$store.dispatch(actionTypes.FETCH_ACTIVITATS)
},
deleteActivitat: (activitat) => {
crud.delete(activitat).then((response) => {
this.reloadActivitats() // calls reloadActivitats method
}).catch((error) => {
console.log(error);
});
}
}
但是当我运行应用程序时,reloadactivats
方法不会执行,控制台显示下一个错误:
TypeError: _this.reloadActivitats is not a function
知道我做错了什么吗?您需要将用法更改为
函数,而不是使用箭头函数
deleteActivitat: function(activitat) {
crud.delete(activitat).then((response) => {
this.reloadActivitats() // calls reloadActivitats method
}).catch((error) => {
console.log(error);
});
}
这是因为箭头起作用this
必须绑定到this.functionName()
的vue实例才能工作
您还可以使用所述的deleteActivitat()
语法。不要对deleteActivitat
使用箭头函数
arrow函数绑定到父上下文,而不是Vue实例
试一试
演示:(打开控制台)避免在方法对象成员中使用箭头函数
deleteActivitat (activitat) {
crud.delete(activitat).then((response) => {
this.reloadActivitats() // calls reloadActivitats method
}).catch((error) => {
console.log(error);
});
}
就这样!谢谢!
deleteActivitat (activitat) {
crud.delete(activitat).then((response) => {
this.reloadActivitats() // calls reloadActivitats method
}).catch((error) => {
console.log(error);
});
}