Опция 1
Упреждающая загрузка содержимого и отключение тех, которые возвращают ошибку.
Вот так будет выглядеть родительский компонент
<template>
<load-content
v-for="(target, index) in loadedTargets"
:key="index"
target="target"
/>
</template>
<script>
export default {
name: 'load content parent',
data: function() {
return {
targets: [
{link: 'foo', data: null, loaded: false, error: null},
{link: 'bar', data: null, loaded: false, error: null},
{link: 'oof', data: null, loaded: false, error: null},
{link: 'rab', data: null, loaded: false, error: null},
]
}
},
computed: {
loadedTargets() {
return this.targets.filter(t => t.loaded)
}
},
methods: {
load(target) {
const self = this;
$.ajax({
url: '/api/fetch-content/' + target.link,
}).then((data) => {
self.targets[indexOf(target)].data = data
self.targets[indexOf(target)].loaded = true
}).catch((error) => {
self.targets[indexOf(target)].error = error
});
},
},
mounted() {
this.targets.forEach(target => this.load(target))
}
};
</script>
Опция2
Упреждающая загрузка стоит дорого (и поскольку я не знаю, сколько у вас может быть целей), вы также можете показать успех / ошибку в модале.Правильный UX будет диктовать, что явное действие пользователя должно привести к результату (например, , если пользователь щелкает ссылку, он должен либо увидеть данные в модальном режиме, либо ошибка )
Вот как будет выглядеть ваше действие:
const actions = {
loadContent ({ commit }, target) {
$.ajax({
url: '/api/fetch-content/' + target,
}).then((data) => {
// Load Modal Window
}).catch((error) => {
// Load Modal Window, and show the error
});
},
};