diff --git a/src/mixins/popup/index.js b/src/mixins/popup/index.js index db8870947..b7a9a7741 100644 --- a/src/mixins/popup/index.js +++ b/src/mixins/popup/index.js @@ -1,7 +1,19 @@ +import Vue from 'vue'; import merge from 'src/utils/merge'; import PopupManager from './popup-manager'; -let idSeed = 1; +let popupContext; +if (Vue.prototype.$isServer) { + popupContext = global.popupContext || {}; + global.popupContext = popupContext; +} else { + popupContext = window.popupContext || {}; + window.popupContext = popupContext; +} + +popupContext = merge(popupContext, { + idSeed: 1 +}); const getDOM = function(dom) { if (dom.nodeType === 3) { @@ -58,7 +70,7 @@ export default { }, beforeMount() { - this._popupId = 'popup-' + idSeed++; + this._popupId = 'popup-' + popupContext.idSeed++; PopupManager.register(this._popupId, this); }, diff --git a/src/mixins/popup/popup-manager.js b/src/mixins/popup/popup-manager.js index 7cdbf0f42..4fea88a08 100644 --- a/src/mixins/popup/popup-manager.js +++ b/src/mixins/popup/popup-manager.js @@ -1,17 +1,21 @@ import Vue from 'vue'; +import merge from 'src/utils/merge'; import { addClass } from 'src/utils/dom'; -let popupContext = { +let popupContext; +if (Vue.prototype.$isServer) { + popupContext = global.popupContext || {}; + global.popupContext = popupContext; +} else { + popupContext = window.popupContext || {}; + window.popupContext = popupContext; +} + +popupContext = merge(popupContext, { hasModal: false, instances: {}, modalStack: [] -}; - -if (Vue.prototype.$isServer) { - global.popupContext = popupContext; -} else { - window.popupContext = popupContext; -} +}); const getModal = function() { let modalDom = PopupManager.modalDom;