Когда я имею дело с модалами, я обычно гарантирую, что есть только один.
Один из способов сделать это - использовать одну переменную для отслеживания того, какой модальный режим открыт
, т. Е. В данных Vue
{
openModal: null,
// enums, you can use numbers or string or not enumarate at all
modalEnum: { MODAL_ADD_OPTION: 'option', MODAL_ADD_GROUP: 'group' }
// ... other data items
}
в шаблоне: (такжедобавлено close, чтобы показать, как закрыть модал)
<el-button class="addOptionBtn" @click="openModal = modalEnum.MODAL_ADD_OPTION;" :class="{active: openModal === modalEnum.MODAL_ADD_OPTION}">Option</el-button>
<el-button class="addGroupBtn" @click="openModal = modalEnum.MODAL_ADD_GROUP;" :class="{active: openModal === modalEnum.MODAL_ADD_GROUP}">Group</el-button>
<el-button class="addGroupBtn" @click="openModal = null;" >Close</el-button>
тогда ваш модал будет ...
<my-option-modal v-if="openModal === modalEnum.MODAL_ADD_OPTION">...</my-option-modal>
<my-group-modal v-if="openModal === modalEnum.MODAL_ADD_GROUP">...</my-group-modal>
Это немного упрощенная версия реализации, но основы естьи вы можете расширить их по мере необходимости.