Vue.js 2 和 Axios 范围问题

马拉马尔

我之前处理过这个“问题”,但我真的不记得如何正确获得结果。我正在使用 Vue 2 在我可以在 HTML 端加载的变量中加载一些数据:

window.Vue = require('vue');
window.axios = require('axios');

const app = new Vue({
    el: '#app',
    data: {
        operaciones: [],
        sopts: []
    },
    created: function() {
        this.loadOperationTypes();
        console.log(this.operaciones); <-- SC
    },
    methods: {
        loadOperationTypes: function() {
            axios.post('/api/operaciones')
            .then(response => {
                console.log(response.data); <-- FC
                this.operaciones = response.data
            })
            .catch(error => {
                this.operaciones = error;
            });
        }
    }
});

如果我console.log(response.data)在 Axios 函数作用域 (FC) 中写入,它会打印:

在此处输入图片说明

但是如果我写console.log(response.data)created_ function() {}范围内,它会打印:

在此处输入图片说明

我已经尝试过像这样使用它:

axios.post('/api/operaciones')
.then(response => {
    console.log(response.data);
    app.operaciones = response.data
})

var $this = this;
axios.post('/api/operaciones')
.then(response => {
    console.log(response.data);
    $this.operaciones = response.data
})

但是是一样的,有什么线索吗?

提前致谢。

伯特

这实际上是一个与范围不同的问题。您在问题中尝试的任何解决方案都可以正确设置this.operaciones. 问题是您正在处理异步操作。

线

console.log(this.operaciones);

increated始终记录一个空数组。那是因为loadOperationTypes执行了异步操作;意思是需要时间

您似乎期望 in 中的所有内容loadOperationTypes都会在console.log执行之前完成,但事实并非如此。loadOperationTypes将向post服务器发起,然后代码将继续并执行console.log.

一旦在稍后的时间点收到来自服务器operaciones的响应就会填充响应。

console.clear()

const app = new Vue({
    el: '#app',
    data: {
        operaciones: [],
        sopts: []
    },
    created: function() {
        this.loadOperationTypes();
        console.log("THIS WILL ALWAYS BE AN EMPTY ARRAY", this.operaciones);
    },
    methods: {
        loadOperationTypes: function() {
            axios.post('https://httpbin.org/post', ["some", "data"])
            .then(response => {
                console.log("THIS SHOULD HAVE DATA", response.data.json);
                this.operaciones = response.data.json
            })
            .catch(error => {
                this.operaciones = error;
            });
        }
    },
    watch: {
      operaciones(newVal){
        console.log("THIS WILL HAVE DATA WHEN operaciones IS POPULATED", newVal)
      }
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.17.1/axios.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.9/vue.js"></script>

<div id="app"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何使用Vue.js 2,BootstrapVue和axios在Chrome中启用内置密码保存提示

来自分类Dev

Vue JS和Axios不返回任何响应

来自分类Dev

使用vue.js和Airtable的多个axios请求

来自分类Dev

使用axios和vue cal恢复数据问题(scheluder)

来自分类Dev

Vue Js-axios的问题与laravel执行多个并发请求

来自分类Dev

Vue.js 深度观察范围问题?

来自分类Dev

Laravel 6和Vue.js使用vue-router和axios从子组件更新记录

来自分类Dev

使用vue js和axios动态网址的搜索过滤器

来自分类Dev

Axios标头不起作用Laravel和Vue.js

来自分类Dev

使用axios和Vue.js以JSON格式获取电子表格数据

来自分类Dev

从对象数组获取数据的问题-vue.js / API / axios / proxy

来自分类Dev

使用带有 vue 和 axios 的 img

来自分类Dev

带有 Vue 和 Axios 的投票按钮

来自分类Dev

使用axios获取api数据(Vue.js 2)时,箭头函数不应返回赋值

来自分类Dev

React.js MERN应用:Axios删除路线未读取道具(范围问题)

来自分类Dev

使用axios -Vue.js删除请求

来自分类Dev

放置表格数据axios vue.js

来自分类Dev

Vue JS:从对象发送axios发布数据

来自分类Dev

Vue.js + Axios未分配响应

来自分类Dev

laravel和vue.js中的chunks文件URL问题

来自分类Dev

Vue.js和Laravel集成问题

来自分类Dev

Google Maps和angular2的范围问题?

来自分类Dev

Vue js CLI 2 导入和使用javascript插件

来自分类Dev

使用Vue.JS / Axios填充DOM和来自第三方API的数据(基于Django!)

来自分类Dev

前端Ktor后端和Axios的CORS问题

来自分类Dev

从Vue.js应用程序(Axios)进行的2个同时API调用随机失败,但在Postman中工作

来自分类Dev

Vue 和 Firebase 问题:错误:函数崩溃超出请求范围函数调用被中断

来自分类Dev

使用jest和vue-test-utils2在vue3打字稿单元测试中模拟axios(已解决)

来自分类Dev

如何使用axios和jwt正确保护Vue?

Related 相关文章

  1. 1

    如何使用Vue.js 2,BootstrapVue和axios在Chrome中启用内置密码保存提示

  2. 2

    Vue JS和Axios不返回任何响应

  3. 3

    使用vue.js和Airtable的多个axios请求

  4. 4

    使用axios和vue cal恢复数据问题(scheluder)

  5. 5

    Vue Js-axios的问题与laravel执行多个并发请求

  6. 6

    Vue.js 深度观察范围问题?

  7. 7

    Laravel 6和Vue.js使用vue-router和axios从子组件更新记录

  8. 8

    使用vue js和axios动态网址的搜索过滤器

  9. 9

    Axios标头不起作用Laravel和Vue.js

  10. 10

    使用axios和Vue.js以JSON格式获取电子表格数据

  11. 11

    从对象数组获取数据的问题-vue.js / API / axios / proxy

  12. 12

    使用带有 vue 和 axios 的 img

  13. 13

    带有 Vue 和 Axios 的投票按钮

  14. 14

    使用axios获取api数据(Vue.js 2)时,箭头函数不应返回赋值

  15. 15

    React.js MERN应用:Axios删除路线未读取道具(范围问题)

  16. 16

    使用axios -Vue.js删除请求

  17. 17

    放置表格数据axios vue.js

  18. 18

    Vue JS:从对象发送axios发布数据

  19. 19

    Vue.js + Axios未分配响应

  20. 20

    laravel和vue.js中的chunks文件URL问题

  21. 21

    Vue.js和Laravel集成问题

  22. 22

    Google Maps和angular2的范围问题?

  23. 23

    Vue js CLI 2 导入和使用javascript插件

  24. 24

    使用Vue.JS / Axios填充DOM和来自第三方API的数据(基于Django!)

  25. 25

    前端Ktor后端和Axios的CORS问题

  26. 26

    从Vue.js应用程序(Axios)进行的2个同时API调用随机失败,但在Postman中工作

  27. 27

    Vue 和 Firebase 问题:错误:函数崩溃超出请求范围函数调用被中断

  28. 28

    使用jest和vue-test-utils2在vue3打字稿单元测试中模拟axios(已解决)

  29. 29

    如何使用axios和jwt正确保护Vue?

热门标签

归档