javascript - 带有 v-for 的 Vue 动态表单字段
问题描述
我正在尝试在 v-for 和 vuex 的帮助下创建动态表单字段。我在另一个 v-for 中有一个 v-for。添加步骤效果很好,但是,当我在添加第二个表单字段后删除默认存在的第一个表单字段时,会发生这种情况:https ://youtu.be/a5b0KaITPTo
这是我为此使用的代码:
Vuex 操作(有效负载是一个对象,其中包含我正在使用的 v-for 的两个索引):
removeMaterialAction({ commit }, payload) {
console.log(payload.materialIndex);
commit("REMOVE_MATERIAL", payload);
},
Vuex突变:
REMOVE_MATERIAL(state, payload) {
state.workOrder.tasks[payload.taskIndex].materials.splice(
payload.materialIndex,
1
);
//Vue.delete(state.workOrder.tasks[taskIndex].materials, index);
}
我尝试过使用 splice、Vue.delete、filter 和 shift,都导致相同的结果。如果有人可以帮助我,我将不胜感激
解决方案
基本上,创建一个唯一的 id 而不是使用 v-for 中的索引。您可以将此函数添加到根的“方法”对象并在 :key= 上调用它,例如uuid(object)
:
uuid(e) {
if (e.uid) return e.uid;
const key = Math.random()
.toString(16)
.slice(2);
this.$set(e, "uid", key);
return e.uid;
}
推荐阅读
- php - 如何处理 jquery.ajax 发送的多个 PHP 复选框?
- python - Oauth2client 错误“NoneType”对象没有属性“get”
- laravel - VUE 中的 GZipped 文件,如何加载?它们是如何处理的?
- php - 如何在 PHP 中应用预定义的 CSS 类
- java - 抽象类中的具体方法和接口中的默认方法同名
- vuetify.js - Vuetify:如何从父组件执行`this.$refs.form.validate()`?
- spring - AWS lambda 上的 Spring Cloud Function 中的多个函数
- html - 当 input[type=text] 已经定义时,在同一行中对齐 2 个 HTML 输入
- java - 如何为 Android Studio 组合这两个应用程序类?
- html - Tomcat和Intelij,好像没有用tomcat,而是用了intelij的端口