У меня есть два вложенных компонента Vue JS: 'States - Parent'
=> 'admin-data-table - Child'
.
Внутри дочернего компонента есть кнопка, которая при щелчке генерирует событие обратно в родительский:
Дочерний компонент - таблица данных администратора:
<template>
<v-data-table :ref="modelName + 'Table'" :value="selectedList" @input="$emit('update:selectedList', $event)" :headers="dataTable.headers" :items="collection" :pagination.sync="dataTable.pagination" select-all item-key="id" class="elevation-1" >
<template v-slot:items="props">
<v-btn v-if="!props.item.active" title="Enable" color="success" small @click.prevent="$emit('toggle-active', props.item.id)"><v-icon>domain</v-icon>Enable</v-btn>
<v-btn v-else title="Disable" color="error" small @click.prevent="$emit('toggle-active', props.item.id)"><v-icon>domain_disabled</v-icon>Disable</v-btn>
</template>
</v-data-table>
</template>
Внутри родительского компонента:
<admin-data-table @toggle-active="toggleActive"></admin-data-table>
Это работает нормально, и испускаемое событие 'toggle-active'
правильно всплывает до родительского метода.
Однако я хочу изменить это, чтобы включить именованный слот для кнопок:
компонент таблицы данных администратора [дочерний]:
<template>
<v-data-table :ref="modelName + 'Table'" :value="selectedList" @input="$emit('update:selectedList', $event)" :headers="dataTable.headers" :items="collection" :pagination.sync="dataTable.pagination" select-all item-key="id" class="elevation-1" >
<template v-slot:items="props">
<slot name="rowBtns" v-bind:item="props.item"></slot>
</template>
</v-data-table>
</template>
Внутри родительского компонента:
<admin-data-table @toggle-active="toggleActive">
<template #rowBtns="props">
<v-btn v-if="!props.item.active" title="Enable" color="success" small @click.prevent="$emit('toggle-active', props.item.id)"><v-icon>domain</v-icon>Enable</v-btn>
<v-btn v-else title="Disable" color="error" small @click.prevent="$emit('toggle-active', props.item.id)"><v-icon>domain_disabled</v-icon>Disable</v-btn>
</template>
</admin-data-table>
Теперь, когда я нажимаю на кнопку, метод toggleActive
в родительском компоненте больше не вызывается, когда генерируется событие toggle-active
. Я подтвердил, что событие все еще передается с правильной полезной нагрузкой при нажатии кнопки.
Почему это больше не вызывает функцию родительского компонента toggleActive
?
<admin-data-table @toggle-active="toggleActive">