angularJs - не отображается ошибка toastr

Я потратил несколько часов на эту проблему, и я не могу понять это:(Я знаю, что я тестировал эту функциональность около недели назад и увидел 2 сообщения об ошибках toastr (хотя я не хотел двух из них). Я не уверен, что именно изменилось, но теперь я не могу отобразить ни одного:(Я не вижу сообщения toastr вообще.

Мой код:

app.directive('serverError', ['resourceFactory', 'spinnerService', 'toastr', '$log',
        function (resourceFactory, spinnerService, toastr, $log) {
        return {
            restrict: 'A',
            controller: ['$scope', '$timeout', function ($scope, $timeout) {
                log = $log.getInstance("serverError");

                var errorToastConfig = {
                    closeButton: true,
                    timeOut: 0,
                    extendedTimeOut: 0,
                    tapToDismiss: false,
                    preventDuplicates: true
                };

                var title = resourceFactory.getResource("Messages", "applicationError");
                $scope.$on('sm:badRequest', function (event, data) {
                    
                    if (!$scope.errorHandled && !$scope.showForm) {
                        log.debug("Handling bad request");
                        let errorMsg = "";
                        angular.forEach(data, function (value, key) {
                            if (value.message == '') value.message = 'The ' + value.property + ' value is invalid.'
                            errorMsg = errorMsg + value.message + " ";
                        });
                        
                        errorMsg = errorMsg.trim();
                        $scope.errors = data;
                       
                        toastr.clear();
                        if (errorMsg=="")
                            errorMsg = resourceFactory.getResource('Messages', 'errorOnForm');

                        title = resourceFactory.getResource("Messages", "badRequest");
                        toastr.error(errorMsg, title, errorToastConfig);
                    }
                    $scope.disableAction = false;
                });

А потом еще и в контроллере:

function (error) {
                        spinnerService.stopSpinner('loaditemtree');
                        $scope.stopExecution = true;
                        if (error.hasOwnProperty("data")) {
                            toastr.clear();
                            let errorMsg = error.data[0].message;
                            toastr.error(errorMsg);
                        }                        
                    });

Я вижу в консоли [ItImagesSearchController] Инициализация контроллера поиска изображений запускается... /SiriuswareControl/api/itDraftHeaders/1019 Не удалось загрузить ресурс: сервер ответил с состоянием 400 (неверный запрос) 2angular.js:14525 [serverError] Обработка неверного запроса

Я также отслеживаю свой код в контроллере и вижу, как выполняется строка с toastr. Однако я не вижу тостра:(Что может быть не так?

1 ответ

Я полагаю, что я понял это, но я как бы вернулся к исходной точке 1. Я хотел предотвратить отображение дублированных сообщений toastr, поэтому у меня есть protectDuplicates: true в конфигурации сервера toastr error. Однако, это так или иначе не сделало ни одно из сообщений, которые будут отображены. Когда я немного изменил сообщение в своем контроллере, я теперь увидел оба сообщения toastr. Как я могу сделать только один из них, чтобы показать?

Другие вопросы по тегам