在promise axios.all中找不到数据

时间:2019-02-27 00:20:13

标签: php laravel vue.js

问题是在promise then()中找不到(this.form.tasks没有其他数据)  与axios.all。 在承诺之外有效,但在内部无效。我收到错误消息:

  

未捕获(承诺)TypeError:无法读取null的属性“ form”

        axios.all([
            axios.get('/tasks/'+this.token_proj),
            axios.get('/keywords/'+this.token_proj),
            axios.get('/getTasks/'+this.token_proj),
            axios.get(`/discussion/${this.token_proj}/${this.form.page}`)
        ])
        .then(axios.spread(function (tasksResponse, keywordsResponse,getTasksResponse,discResponse) {

            console.log('tasks', tasksResponse.data);
            console.log('keyword', keywordsResponse.data);
            console.log('getrask', getTasksResponse.data);
            console.log('disc', discResponse.data);

            this.form.tasks = tasksResponse.data;



        }));

task变量在数据中设置并且存在。我使用Vuejs和axios vform。

data(){
        return{
            form: new Form({

            tasks:[],
            tasks_management:[],
            discuss:{},
            users:[],
            keywords:[],


            })
        }
    }

1 个答案:

答案 0 :(得分:0)

考虑使用this在匿名回调中保留fat arrow function的范围,而不是使用别名this

.then(axios.spread((tasksResponse, keywordsResponse,getTasksResponse,discResponse) => {
  //this is now scoped correctly.
}))