gpt4 book ai didi

javascript - 如何使用 vue.js 中的单击事件从数据表中删除行而不干扰计算函数

转载 作者:行者123 更新时间:2023-12-01 15:43:49 25 4
gpt4 key购买 nike

我正在使用 Vuetify 当前的 CRUD Datatable UI Component 制作购物车(与 Vue.js2 兼容)。我以前在通过将产品的数量与其价格相乘来计算产品的总数时遇到了问题。幸运的是,通过使用计算函数 detailsWithSubTotal() 给了我一个很好的解决方案。计算总数并替换数据表的 :item值(以前是 "details" )到 :item="detailsWithSubTotal"正如您在以下代码中看到的:
HTML

<template>
<v-layout align-start>
<v-flex>
<v-container grid-list-sm class="pa-4 white">
<v-layout row wrap>
<v-flex xs12 sm8 md8 lg8 xl8>
<v-text-field
v-model="code"
label="Barcode"
@keyup.enter="searchBarcode()"
>
</v-text-field>
</v-flex>
<v-flex xs12 sm12 md12 lg12 xl12>
<v-data-table
:headers="headerDetails"
:items="detailsWithSubTotal"
hide-default-footer
class="elevation-1"
>
<template v-slot:item.delete="{ item }">
<v-icon small class="ml-3" @click="deleteDetail(detailsWithSubTotal, item)">
delete
</v-icon>
</template>
<template v-slot:no-data>
<h3>There are no current products added on details.</h3>
</template>
</v-data-table>
</v-flex>
</v-layout>
</v-container>
</v-flex>
</v-layout>
</template>
JAVASCRIPT
<script>
import axios from 'axios'
export default {
data() {
return {
headerDetails: [
{ text: 'Remove', value: 'delete', sortable: false },
{ text: 'Product', value: 'product', sortable: false },
{ text: 'Quantity', value: 'quantity', sortable: false },
{ text: 'Price', value: 'price', sortable: false },
{ text: 'Subtotal', value: 'subtotal', sortable: false }
],
details: [],
code: ''
}
},
computed: {
detailsWithSubTotal() {
return this.details.map((detail) => ({
...detail,
subtotal: detail.quantity * detail.price
}))
}
},
methods: {
searchBarcode() {
axios
.get('api/Products/SearchProductBarcode/' + this.code)
.then(function(response) {
this.addDetail(response.data)
})
.catch(function(error) {
console.log(error)
})
},
addDetail(data = []) {
this.details.push({
idproduct: data['idproduct'],
product: data['name'],
quantity: 10,
price: 150
})
},
deleteDetail(arr,item){
var i= arr.indexOf(item);
if (i!==-1){
arr.splice(i,1);
}
},
}
}
</script>
虽然这有助于解决我以前的问题,但现在我无法删除添加的细节。
同时将数组参数保留在 @click 中事件为 @click="deleteDetail(details, item ) 和数据表的 :item值为 :items="details" ,删除按钮没有问题,但小计计算不起作用,如下图所示:
enter image description here
但是当将两个数组参数替换为 @click="deleteDetail(detailsWithSubTotal, item 时) 和 :item值到 :items="detailsWithSubTotal" ,它计算小计,但删除按钮停止工作。
enter image description here
如何在不干扰 detailsWithSubTotal() 的情况下删除数据表上添加的行计算函数?

最佳答案

您可以尝试添加detail自身到一个计算项作为原始项的链接,并使用它从原始项中删除 details大批:

detailsWithSubTotal() {
return this.details.map((detail) => ({
...detail,
subtotal: detail.quantity * detail.price,
source: detail
}))
}
...
@click="deleteDetail(details, item)
...
deleteDetail(arr,item){
var i= arr.indexOf(item.source);
if (i!==-1){
arr.splice(i,1);
}
}

关于javascript - 如何使用 vue.js 中的单击事件从数据表中删除行而不干扰计算函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62523759/

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