Предположим, у нас есть следующий фрагмент кода
axios.interceptors.response.use(function (response) {
return response;
}, function (error) {
if (error.response.status === 400) {
if (error.response.data.type === "fieldsValidationErrors") {
openModal(modal.validationsFailedInfo);
} else {
openModal(modal.cannotHandleServerResponse);
}
} else if(error.response.status === 403) {
redirectToLoginScreen();
} else {
openModal(modal.errorOccurred);
}
return Promise.reject(error);
});
Этот код включен до
const app1 = new Vue({...});
app1.init();
У меня также есть другое приложение для пользовательского интерфейса:
const app2 = new Vue({...});
app2.init();
Перехватчики axios объявляются до объявления экземпляров vue.
Внутри каждого приложения Vue у меня есть <notifications type="danger" :messages="errors.items"></notifications>
компонент, который получает ошибки из приложения.
Внутри компонента notifications
у меня есть
Vue.component('notifications', {
...
template: '<section v-if="messages.length > 0" id="notifications" class="notifications-outer-wrapper">\n' +
' <div class="user-notification-content well form-group" :class="{ \'notify-danger\': type === \'danger\', \'notify-success\': type === \'success\' }">\n' +
' <span class="fa fa-info-circle notificationIcon" aria-hidden="true"></span>\n' +
' \n' +
' <span v-if="type === \'danger\'">{{message}}</span>\n' +
' </div>\n' +
' </section>'
});
В настоящее время я использую модалы, чтобы показать, что что-то пошло не так. Мне нужно отобразить сообщения об ошибках внутри компонента <notifications>
, каждый экземпляр Vue имеет один компонент уведомления.
Есть идеи о том, как получить такое поведение?