2 回答

TA贡献2051条经验 获得超10个赞
我认为最简单的方法是在将每个项目加载到数据属性时人为地为每个项目引入一个 ID属性。
这样的事情可能很好:
new Vue({
el: "#app",
data: {
pecaList: []
},
methods: {
fetchData() {
return fetch('https://jsonplaceholder.typicode.com/todos')
.then(response => response.json())
.then(json => {
// console.log(json)
// creating another ID, based on the current list index
return json.map((e, i) => {
return { ...e,
addedId: i
}
})
})
},
deleteThis(id) {
this.pecaList = this.pecaList.filter(e => e.addedId !== id)
}
},
async mounted() {
this.pecaList = await this.fetchData()
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<h3>Click on the list items to delete them one by one</h3>
<ul>
<li :key="peca.id" v-for="peca in pecaList" @click="deleteThis(peca.addedId)">{{peca.addedId}} {{peca.title}}</li>
</ul>
</div>
模型数据已经有一个id属性,所以我添加了一个名为addedId的 ID 。从那时起,这个addedId标识您的项目(不管它在表或列表中的索引;直到您获取另一组数据或重新加载,或类似的东西),因此您可以将其用于删除。
实际上,不建议在列表中使用项目索引进行识别 - 它可以更改(如排序或过滤),因此无论何时要使用 ID,请确保它在所有用例中正确识别项目。

TA贡献1998条经验 获得超6个赞
我找到了一种方法来完成我需要做的事情,不像我想要的那样,但它有效,只需将我的 b-table 更改为 b-list-group。
它的结尾是这样的:
<b-list-group>
<b-list-group-item v-for="(item, index) in peca.list">
<strong>Item: </strong>{{ index }}
<strong>Peça: </strong>{{ item.peca}}
<strong>Quantidade: </strong>{{ item.qnt}}
<strong>Valor Unitário: </strong>{{ item.vlUnit }}
<strong>Valor total: </strong>{{ item.vlTot }}
<b-button variant="warning" >
<i class="fa fa-pencil"></i>
</b-button>
<b-button variant="danger" @click="deleteTask(index)" class="mr-2">
<i class="fa fa-trash"></i>
</b-button>
</b-list-group-item>
</b-list-group>
现在工作。
添加回答
举报