Vue.js - 为什么我不能删除数组中的所有项目?
Vue.js - Why can't I delete all items from an array?
我得到了一个父组件(一个表单)分解成子组件来处理不同类型的输入数据。数据是从 API 中预填充的。如果用户进行新选择或更改子组件中的某些数据,我想将其发送到父组件,以便我可以在表单提交事件中使用它并将新数据传递给 database/API.
以上逻辑适用于更新,但是,如果用户想要删除一个项目(通过选择下面屏幕截图中的“X”按钮),我还需要更新表单结果的数组,不包括“已删除”项。 结果数组的形式可以工作,但由于某种原因,我无法从 UI:
中删除卡片
父组件将表单值道具传递给子组件,子组件将更新发送回父组件:
<ISOAdminDivForm />
<ISOAdminDivFormName />
<ISOAdminDivFormNameItem />
有人可以查看我的 codesandbox 演示并帮助我弄清楚为什么我不能从 UI 中动态删除“卡片”吗?
我设法让一些东西起作用了。它实际上比我最初想象的要简单,因为您包含了很多文件(对于一个最小的、可重现的示例来说,需要的更多)。
基本上,归结为正确更新 divisionLanguages
数据 属性。
为了简单起见,我删除了 formValues
数据,因为我认为 divisionLanguages.data
.
只是令人困惑和多余
正如我在评论中所说,要在 Vue 中更新反应列表,您需要使用 Array.splice
.
因此您的 deleteItem
方法将需要找到要删除的项目的索引,然后将数组与所述索引拼接:
deleteItem(id) {
const elementIndex = this.divisionLanguages.data.findIndex(
(x) => x.P_uniqueID === id
);
this.divisionLanguages.data.splice(elementIndex, 1);
this.$emit("languages", this.divisionLanguages.data);
}
我得到了一个父组件(一个表单)分解成子组件来处理不同类型的输入数据。数据是从 API 中预填充的。如果用户进行新选择或更改子组件中的某些数据,我想将其发送到父组件,以便我可以在表单提交事件中使用它并将新数据传递给 database/API.
以上逻辑适用于更新,但是,如果用户想要删除一个项目(通过选择下面屏幕截图中的“X”按钮),我还需要更新表单结果的数组,不包括“已删除”项。 结果数组的形式可以工作,但由于某种原因,我无法从 UI:
中删除卡片父组件将表单值道具传递给子组件,子组件将更新发送回父组件:
<ISOAdminDivForm />
<ISOAdminDivFormName />
<ISOAdminDivFormNameItem />
有人可以查看我的 codesandbox 演示并帮助我弄清楚为什么我不能从 UI 中动态删除“卡片”吗?
我设法让一些东西起作用了。它实际上比我最初想象的要简单,因为您包含了很多文件(对于一个最小的、可重现的示例来说,需要的更多)。
基本上,归结为正确更新 divisionLanguages
数据 属性。
为了简单起见,我删除了 formValues
数据,因为我认为 divisionLanguages.data
.
正如我在评论中所说,要在 Vue 中更新反应列表,您需要使用 Array.splice
.
因此您的 deleteItem
方法将需要找到要删除的项目的索引,然后将数组与所述索引拼接:
deleteItem(id) {
const elementIndex = this.divisionLanguages.data.findIndex(
(x) => x.P_uniqueID === id
);
this.divisionLanguages.data.splice(elementIndex, 1);
this.$emit("languages", this.divisionLanguages.data);
}