vue-如何从回调调用另一个方法?

mitkmikd  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(323)

此问题已在此处找到答案

如何在回调中访问正确的'this'((13个答案)
“this”关键字是如何工作的((21个答案)
昨天关门了。
我需要调用这个函数 get_data() 一旦函数 save_key() 执行完毕后,问题是我得到了一个 Cannot read property 'get_data' of undefined 错误。我假设我得到它是因为函数是从回调调用的。我怎样才能解决这个问题?

  1. methods: {
  2. async get_data(){
  3. var response = await axios.get("http://127.0.0.1:8000/retrieve_user_data");
  4. this.keys = response['data']
  5. },
  6. save_key(){
  7. var key_data = {'action': 'save', 'key': this.form.key}
  8. return axios({
  9. method: 'post',
  10. url: 'http://127.0.0.1:8000/save_data/',
  11. data: key_data,
  12. withCredentials: true,
  13. headers: {}
  14. }).then(function (response) {
  15. this.get_data()
  16. })
  17. }
  18. }
s4chpxco

s4chpxco1#

错误是因为“this”的范围在回调中设置为全局(窗口)对象。这可以通过使用箭头函数或使用占位符变量来解决。您可以尝试像这样更新save_key函数

  1. save_key(){
  2. const self = this;
  3. var key_data = {'action': 'save', 'key': this.form.key}
  4. return axios({
  5. method: 'post',
  6. url: 'http://127.0.0.1:8000/save_data/',
  7. data: key_data,
  8. withCredentials: true,
  9. headers: {}
  10. })
  11. .then(function (response) {
  12. self.get_data();
  13. })
  14. }
展开查看全部

相关问题