0

我在这个问题上花了几个小时,但我无法弄清楚:(我知道我大约一周前测试了该功能,我看到显示了 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 的行。但是,我没有看到 toastr :( 可能有什么问题?

4

1 回答 1

0

我相信我已经弄清楚了,但我有点回到第 1 点。我想防止显示重复的 toastr 消息,因此我在服务器错误 toastr 配置中设置了 preventDuplicates: true 。但是,它不知何故没有显示任何消息。当我稍微更改控制器中的消息时,我现在看到了两个 toastr 消息。我怎样才能只显示其中一个?

于 2018-03-27T21:44:23.467 回答