I want to delete the specific record from the tables based on the selection a user makes. For example, if the user selects any 3 options then a delete button should appear, and that delete button should allow deleting those specific records. The same goes for the scenario if the user selects all the rows. Right now unable to grab the id of the rows that are selected.
<v-btn v-show="deleteBtn" color="danger white--text" >
<v-icon>mdi-delete</v-icon>
</v-btn>
<v-data-table
fixed-header
:v-model="selected"
@input="enterSelect()"
:headers="headers"
:items="company"
:single-select="singleSelect"
item-key="name"
show-select
class="elevation-1"
checkboxColor="red"
>
<template v-slot:item.option="props">
<v-icon class="mx-1" fab dark color="success darken-3" @click="onButtonClick(props.item)">mdi-circle-edit-outline</v-icon>
<v-icon class="mx-1" fab dark color="danger" @click="onButtonClick(props.item)">mdi-delete-outline</v-icon>
</template>
</v-data-table>
export default{
data:()=>{
return{
singleSelect: false,
deleteBtn:false,
selected: [],
headers: [
{
text: 'Company Name',
align: 'start',
sortable: false,
value: 'name',
},
{ text: 'Email', value: 'email',},
{ text: 'Contact Number', value: 'contact', },
{ text: 'Country', value: 'country', },
{ text: 'Parent Company ', value: 'parent', },
{ text: 'Option', value: 'option', },
],
company: [
{
id:1,
name: 'Justice League',
email: '[email protected]',
contact: '01287(7643)',
country: 'Metroplis',
parent: 'Wayne Industries',
},
{
id:2,
name: 'Teen Titans',
email: '[email protected]',
contact: '01287(7643)',
country: 'Metroplis',
parent: 'Wayne Industries',
},
{
id:3,
name: 'Titans',
email: '[email protected]',
contact: '01287(7643)',
country: 'Central City',
parent: 'Wayne Industries',
},
{
id:4,
name: 'Team Flash',
email: '[email protected]',
contact: '01287(7643)',
country: 'Central City',
parent: '-',
},
{
id:5,
name: 'Team SuperGirl',
email: '[email protected]',
contact: '01287(7643)',
country: 'Central City',
parent: 'Superman',
},
{
id:6,
name: ' SuperGirl',
email: '[email protected]',
contact: '01287(7643)',
country: 'Central City',
parent: 'Superman',
},
],
}
},
methods:{
//this selects the hides and shows the delete button when all data are seleted
selectAll(){
this.deleteBtn=!this.deleteBtn;
},
//also there should be method that triggers the delete button when single checkbox is selected
onButtonClick(tr){
console.log(tr.id);
},
enterSelect() {
console.log(this.selected.map(e => e.name)); // logs all the selected items.
}
}
}
When you select the items it gets saved in the
selected
variable which is whatv-model
(two-way binding) does.For example, if you select any two items, the
selected
variable's output will look like this-If you will select all items,
selected
variable will hold all items inside it. You can console yourselected
variable to understand more.Now, on the delete button's click, call your function, and simply parse the ids from this array of objects using any suitable method. For example, using foreach-
Using map function-
If your API supports multiple items deletion, then you can directly send the
map
function output to your API-