如何仅使用angularjs在特定时间内仅在当前页面中显示Flash消息?

时间:2016-06-29 08:29:29

标签: angularjs html5

当我上传简历时,会显示已成功上传的简历。但是当我转到下一页时,这个消息仍然存在。

但是当我第三次转到另一个页面时,这个flash消息就消失了。

刷新页面时,该消息也会消失。

你能帮助我,当我转到下一页时,如何让flash消息消失,而且它只能在特定时间显示。

fileUpload.uploadFileToUrl( json, file ).then(function(res){
                if( res.success !== undefined ){
                    FlashService.Error(res.message,  true);
                } else {
                    if (res.json.response.statuscode==0) {
                        console.log(res.json.response);

                        if( type === "photo" ) {
                            $cookieStore.put('photoid', res.json.response.photoid);
                        } else {
                            $cookieStore.put('resumeid', res.json.response.resumeid);
                        }

                        FlashService.Success( ( $scope.capitalizeFirstLetter( type ) +" upload successfully" ),true);
                    } else {
                        FlashService.Error(res.json.response.statusmessage);
                    }
                }
            });
        }

1 个答案:

答案 0 :(得分:0)

我在控制器的代码中使用了以下行解决了上述问题。

FlashService.Success( ( $scope.capitalizeFirstLetter( type ) +" upload successfully" ),false);

我用过' false'而不是' true'。

flash.service.js:

angular
        .module('app')
        .factory('FlashService', FlashService);

    FlashService.$inject = ['$rootScope'];
    function FlashService($rootScope) {
        var service = {};

        service.Success = Success;
        service.Error = Error;

        initService();

        return service;

        function initService() {
            $rootScope.$on('$locationChangeStart', function () {
                clearFlashMessage();
            });

            function clearFlashMessage() {
                var flash = $rootScope.flash;
                if (flash) {
                    if (!flash.keepAfterLocationChange) {
                        delete $rootScope.flash;
                    } else {
                        // only keep for a single location change
                        flash.keepAfterLocationChange = false;
                    }
                }
            }
        }

        function Success(message, keepAfterLocationChange) {
            $rootScope.flash = {
                message: message,
                type: 'success', 
                keepAfterLocationChange: keepAfterLocationChange
            };
        }

        function Error(message, keepAfterLocationChange) {
            $rootScope.flash = {
                message: message,
                type: 'error',
                keepAfterLocationChange: keepAfterLocationChange
            };
        }
    }