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

Posted

技术标签:

【中文标题】Vue Js - axios 的问题使用 laravel 执行多个并发请求【英文标题】:Vue Js - issue with axios Performing multiple concurrent requests with laravel 【发布时间】:2017-05-28 12:00:08 【问题描述】:

好吧,我可能有小问题,但我想不通。

如果我使用 axios 只传递一个 http 请求,一切都很好。

但是当我使用多个请求时,我会在控制台日志中得到结果,但无法发送到查看文件(laravel 刀片视图文件)。

让我给你看我的代码:

brand.blade.php

// main element for Vue js el: '#container'
<div id="container" class="row all_brands">
        <brands></brands>
    </div>


// template for brand component
<template id="brand-template">
   <ul>
     // if I only pass one http request through axios then  my data shows here but for multiple request not showing anything.
     <li v-for="brand in list" v-text="brand.brand_id"></li>

   </ul>
   @count
</template>

brand.js

Vue.component('brands',

template: '#brand-template',

data: function()

    return

        list: [],
        count: ''
    

,

created: function()

    //axios.get('api/brands').then(response => this.list = response.data) ; // here I send only one gttp request and working find..

    axios.all([
    axios.get('api/brands'),
    axios.get('api/brand_count')
    ])
        .then(
        axios.spread(
            function (brand, count) 
             // this is not working and not set these data to my brand.blade.php file template
             this.list = brand.data;
             this.count = count.data;
             // console show me all the data that coming from http request  
            //console.log('list',brand.data);
            //console.log('count',count.data);
            
    ))



);


new Vue(

el: '#container'

)

谁能告诉我如何在我的视图文件中显示数据?

【问题讨论】:

【参考方案1】:

发生这种情况是因为this 的作用域在axios.spread 中不正确,之前它对你有用,因为你使用的是 es6 箭头函数,它会自动绑定this 作用域。

您可以进行以下更改以使其正常工作:

created: function()
    var that = this    
    axios.all([
    axios.get('api/brands'),
    axios.get('api/brand_count')
    ])
        .then(
        axios.spread(
            function (brand, count) 
             that.list = brand.data;
             that.count = count.data;
            
    ))


【讨论】:

以上是关于Vue Js - axios 的问题使用 laravel 执行多个并发请求的主要内容,如果未能解决你的问题,请参考以下文章

Axios-一次发出多个请求(vue.js)

Vue.js 使用 axios 缓存 http 请求

使用 Vue.js、Axios 和 Django 过滤对象

vue.js中使用Axios

使用 Axios 和 Vue.js 进行 JWT 授权(标题)

Vue2使用axios,request.js和vue.config.js