初学者

message生命周期的问题

  • 0

我添加了提示消息,但是展示之后一直不消失,刷新页面也没有。 怎么让他显示一次后就不在显示呢?

感谢大家!

分享到

相关问题

1 回答

  1. 这个回答已被编辑。

    你代码是怎么写的? 不可能一直存在的,一般刷新后就没有了。

    在Magento\Theme\Controller\Result里可以看到,有setCookie,也就是把messages存储到cookie里,便于js读取。

    是不是改写 vendor/magento/module-theme/view/frontend/web/js/view/messages.js了?

    应该是显示完成后,自动清除message的cookie

    /**
     * Copyright © Magento, Inc. All rights reserved.
     * See COPYING.txt for license details.
     */
    
    /**
     * @api
     */
    define([
        'jquery',
        'uiComponent',
        'Magento_Customer/js/customer-data',
        'underscore',
        'escaper',
        'jquery/jquery-storageapi'
    ], function ($, Component, customerData, _, escaper) {
        'use strict';
    
        return Component.extend({
            defaults: {
                cookieMessages: [],
                messages: [],
                allowedTags: ['div', 'span', 'b', 'strong', 'i', 'em', 'u', 'a']
            },
    
            /**
             * Extends Component object by storage observable messages.
             */
            initialize: function () {
                this._super();
    
                this.cookieMessages = _.unique($.cookieStorage.get('mage-messages'), 'text');
                this.messages = customerData.get('messages').extend({
                    disposableCustomerData: 'messages'
                });
    
                // Force to clean obsolete messages
                if (!_.isEmpty(this.messages().messages)) {
                    customerData.set('messages', {});
                }
    
                $.cookieStorage.set('mage-messages', '');
            },
    
            /**
             * Prepare the given message to be rendered as HTML
             *
             * @param {String} message
             * @return {String}
             */
            prepareMessageForHtml: function (message) {
                return escaper.escapeHtml(message, this.allowedTags);
            }
        });
    });
    
    • -1
    • 分享到
      分享到

您必须登录才能添加回答。