Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Vue调用同一组件的方法_Javascript_Vue.js - Fatal编程技术网

Javascript 使用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(

我有一个带有两个方法的vue组件,
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);
    });
  }