Vue.js 删除存储Vuex中的项目
我想删除位于我的商店中的商品。 我看到了这个解决方案,这似乎是我正在寻找的,但我的对象中有另一个“级别”,所以我不知道如何从子级别删除元素 我的数据结构Vue.js 删除存储Vuex中的项目,vue.js,nuxt.js,vuex,Vue.js,Nuxt.js,Vuex,我想删除位于我的商店中的商品。 我看到了这个解决方案,这似乎是我正在寻找的,但我的对象中有另一个“级别”,所以我不知道如何从子级别删除元素 我的数据结构 { id:1, 姓名:“我的客户一号”, 项目:[ { id:1, 姓名:'姓名', 测试:[ { id:1, 名称:“名称测试” }, { id:2, 名称:“名称测试2” } ] }, { id:2, 姓名:“其他姓名” } ] } 所以我看到了如何删除上面链接的项目。但是如何删除一行测试呢 我在vue中执行此操作: this.$stor
{
id:1,
姓名:“我的客户一号”,
项目:[
{
id:1,
姓名:'姓名',
测试:[
{
id:1,
名称:“名称测试”
},
{
id:2,
名称:“名称测试2”
}
]
},
{
id:2,
姓名:“其他姓名”
}
]
}
所以我看到了如何删除上面链接的项目。但是如何删除一行测试呢
我在vue中执行此操作:
this.$store.commit(“deletetetest”,this.idProject,e)
在我的店里:
deleteTest(状态,{data,e}){
const allTestsOfProject=state.listProjects.projects.find(p=>p.id==data)
log(“全部”,allTestsOfProject)
const-oneTest=allTestsOfProject.studies.find(q=>q.id==e)
console.log(“一次测试”,一次测试)
//state.listProjects.projects.splice(oneTest,1)
}
非常感谢您的帮助您的代码有两个问题: 第一个问题
commit
函数只需要两个参数:
this.$store.commit(“deletetetest”,this.idProject,e)//不起作用
这个.$store.commit(“deletetetest”,{data:this.idProject,e})//将起作用
现在您可以调用deleteTest(state,{data,e})
第二个问题
您应该获得测试对象的索引,而不是对象本身
const-oneTest=allTestsOfProject.studies.find(q=>q.id==e)//不起作用
const oneTest=allTestsOfProject.studies.findIndex(q=>q.id==e)//将起作用
现在您可以调用:
allTestsOfProject.studies.findIndex(q=>q.id==e)
删除您的测试您可以添加运行解决方案时发生的错误吗无错误:此代码删除了整个项目,而只删除了id为1的测试项。console.log(oneTest)
工作正常吗?我认为我做得不好:我曾直接在我的Vue模板中尝试过;我的控制台日志中有我的好数据。但是当我在商店里传递我的函数时,它就不再工作了。我想我的有效载荷数据有问题,因为它不再识别任何东西。为了更清晰,我编辑了我的问题。请尝试:allTestsOfProject.tests.splice(oneTest,1)