можно сделать красивее. Есть компонент (рама модалки с местом под контент и кнопку закрыть) ему передается конфигурация в которой описано - какой компонент открыть (далее по коду идет экстенд конструктора модалки компонентом который вызывается и монированием оного в позицию контента) и какие ивенты на него забиндить (получается что подписываюсь на ивенты, которые потом будет кидать контент при работе). в итоге получаю всякое некрасивое в стиле @order-state-change=$emit(‘order-state-change’ - пробрасываю до компонента модалки по сути где и есть подписка). почитал про $listners, но как будто они не для проксирования задуманы. До кучи хочется что бы и из контента можно было стрелять до уровня модалки (типа кинуть команду закрыть), но это кажется решается нормально и через @order-state-change=$emit(‘close-modal’). А вот как спроксить иные ивенты через компонент не могу придумать. Есть идеи и варианты?
const old_on = this.$on; this.$on = (...args) => { // custom logic here like pushing to a callback array or something old_on.apply(this, args); };
контент модалки не должен общатся с компонентом модалки напрямую. Контент модалки не виноват в том что он отображается внутри модалки и в будущем может быть например вынесен в какое нибудь другой контейнер с другим механизмом закрытия. Контент модалки должен тригерить vuexный экшон, а родительский компонент модалки дожен подписываться на состояние вуекса в котором хранится флажок - показывать/непоказывать модалку
не надо наследоваться от модалки чтобы переопределять ее контент. Лучше сделать компонент модалки со слотом под контент. Тогда этот контент модалки может быть опеределен в родительском компоненне модалки, и значит у контента модалки будет доступ к методам и состоянию родительского компонента модалки
Обсуждают сегодня