gpt4 book ai didi

javascript - 删除一行后刷新 Bootstrap-Vue 表

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:49 29 4
gpt4 key购买 nike

我正在为我的数据表使用 Bootstrap-Vue,并在我的仪表板中获得了下表:

enter image description here

我可以通过单击垃圾桶图标成功删除项目。它使用 Axios 发送 AJAX 请求。但是,删除后它仍然显示该项目,直到我手动刷新网页。我该如何解决这个问题?我不想发出另一个 AJAX 请求来加载更新版本,我认为解决它的最佳方法是从数据表中删除已删除的项目行。

我尝试为我的表提供一个 ref 标签并使用 this.$refs.table.refresh(); 调用刷新函数,但没有成功。

我的代码:

<template>
<div>
<b-modal ref="myModalRef" hide-footer title="Delete product">
<div class="container">
<div class="row">
<p>Are you sure you want to delete this item?</p>
<div class="col-md-6 pl-0">
<a href="#" v-on:click="deleteItem(selectedID)" class="btn btn-secondary btn-sm btn-block">Confirm</a>
</div>
<div class="col-md-6 pr-0">
<a href="#" v-on:click="$refs.myModalRef.hide()" class="btn btn-tertiary btn-sm btn-block">Cancel</a>
</div>
</div>
</div>
</b-modal>
<div id="main-wrapper" class="container">
<div class="row">
<div class="col-md-12">
<h4>Mijn producten</h4>
<p>Hier vind zich een overzicht van uw producten plaats.</p>
</div>

<div class="col-md-6 col-sm-6 col-12 mt-3 text-left">
<router-link class="btn btn-primary btn-sm" :to="{ name: 'create-product'}">Create new product</router-link>
</div>
<div class="col-md-6 col-sm-6 col-12 mt-3 text-right">
<b-form-input v-model="filter" class="table-search" placeholder="Type to Search" />
</div>
<div class="col-md-12">
<hr>
<b-table ref="table" show-empty striped hover responsive :items="posts" :fields="fields" :filter="filter" :current-page="currentPage" :per-page="perPage">
<template slot="title" slot-scope="data">
{{ data.item.title|truncate(30) }}
</template>
<template slot="description" slot-scope="data">
{{ data.item.description|truncate(50) }}
</template>
<template slot="public" slot-scope="data">
<i v-if="data.item.public === 0" title="Unpublished" class="fa fa-circle false" aria-hidden="true"></i>
<i v-else title="Published" class="fa fa-circle true" aria-hidden="true"></i>
</template>
<template slot="date" slot-scope="data">
{{ data.item.updated_at }}
</template>
<template slot="actions" slot-scope="data">
<a class="icon" href="#"><i class="fas fa-eye"></i></a>
<a v-on:click="editItem(data.item.id)" class="icon" href="#"><i class="fas fa-pencil-alt"></i></a>
<a href="#" v-on:click="getID(data.item.id)" class="icon"><i class="fas fa-trash"></i></a>
</template>
</b-table>
<b-pagination :total-rows="totalRows" :per-page="perPage" v-model="currentPage" class="my-0 pagination-sm" />
</div>

</div><!-- Row -->

</div><!-- Main Wrapper -->
</div>

<script>
export default {

data() {
return {
posts: [],
filter: null,
currentPage: 1,
perPage: 10,
totalRows: null,
selectedID: null,
fields: [
{
key: 'title',
sortable: true
},
{
key: 'description',
},
{
key: 'public',
sortable: true,

},
{
key: 'date',
label: 'Last updated',
sortable: true,
},
{
key: 'actions',
}

],
}
},
mounted() {
this.getResults();
},
methods: {
// Our method to GET results from a Laravel endpoint
getResults() {
axios.get('/api/products')

.then(response => {
this.posts = response.data;
this.totalRows = response.data.length;
});
},
getID: function(id){
this.selectedID = id;
this.$refs.myModalRef.show();
},
deleteItem: function (id) {
axios.delete('/api/products/' + id)
.then(response => {
this.$refs.myModalRef.hide();
this.$refs.table.refresh();

});

},
editItem: function (id){
this.$router.push({ path: 'products/' + id });
}
},

}
</script>

最佳答案

The deleteItem method should be like this:

        deleteItem(id) {
axios.delete('/api/products/' + id)
.then(response => {
const index = this.posts.findIndex(post => post.id === id) // find the post index
if (~index) // if the post exists in array
this.posts.splice(index, 1) //delete the post
});

},

所以基本上你不需要任何刷新。如果你删除 posts 数组的项目,Vue 会自动为你处理这个,你的表将被“刷新”

关于javascript - 删除一行后刷新 Bootstrap-Vue 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53042690/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com