VueRouter - 导航前获取 - 多个 AJAX

VueRouter - Fetching Before Navigation - Multiple AJAX

我想使用 beforeRouteEnter 守卫,这样我可以确保在转到页面之前我的数据已加载。我阅读了您可以在 vue-router 文档中找到 here 的示例。

现状

我正在执行两个 AJAX 调用以在 created 生命周期事件中获取一些数据。

export default {

    created() {
      const _this = this;
      axios.get('/getCompanyDetails').then((response) => {
            _this.private.company_details = response.data
        });
      axios.get('/getusers').then((response) => {
            if(response.data){
                _this.private.company_users =  response.data;
            }
        });
    }
}

我的尝试

 beforeRouteEnter (to, from, next) {

        function getCompanyDetails() {
            return  axios.get('/getCompanyDetails')    
        }

        function getUsers() {
            return axios.get('/getusers');
        }

        axios.all([getCompanyDetails(), getUsers()])
            .then(axios.spread(function (company_details, company_users) {
                next(vm => vm.setData(err, company_details, company_users))
            }));
    },

我走在正确的轨道上吗?我在这里唯一看到的是我发现我只需要调用 next 中的一个函数 setData 以及从不同的 AJAX 调用接收到的所有参数。

有没有办法在next中调用setUsers()setDetails()等几个函数?

有没有比我现在做的更好的方法?

正如@thanksd 所述:

next((vm) => { vm.setUser(err, company_users); vm.setDetails(err, company_details); })

那么最后的答案就是

beforeRouteEnter (to, from, next) {

        function getCompanyDetails() {
            return  axios.get('/getCompanyDetails')    
        }

        function getUsers() {
            return axios.get('/getusers');
        }

        axios.all([getCompanyDetails(), getUsers()])
            .then(axios.spread(function (company_details, company_users) {
                next((vm) => { vm.setUser(err, company_users); vm.setDetails(err, company_details); })
            }));
    },