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); })
}));
},
我想使用 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); })
}));
},