子表中有一个成员组件,因为关联表单不触发onChange事件,所以成员控件值是数据联动(关联表单填充一个控件)带出来的,然后给子表或者这个成员组件绑定onChange事件。现在就想将子表中的成员控价的值去重后放到主表的多选成员控件中
你好可以参考一下下列代码,注意修改一下子表单的唯一标识及子表单内成员组件的唯一标识```// 子表单onchange事件
export function onTableChange({ value, extra }) {
const { formGroupId, fieldId, from, changes = {}, tableFieldId } = extra || {};
console.log(fieldId, '11', value)
// 必须,避免使用 updateItemValue 更新子表数据后,再次触发 onChange 陷入死循环
if (from === 'setItemValue') { return };
const tableField = this.$('tableField_lp0zc3kc');
// 上述代码必须存在,否则会造成功能异常
// 子表单成员2(多选模式)
if (fieldId && fieldId === 'employeeField_lp0zc3ke') {
const employeeData = value.filter(item => {
return item.employeeField_lp0zc3ke && item.employeeField_lp0zc3ke.length > 0;
});
const users2 = [];
for (let i = 0; i < employeeData.length; i++) {
for (let j = 0; j < employeeData[i].employeeField_lp0zc3ke.length; j++) {
users2.push(employeeData[i].employeeField_lp0zc3ke[j])
}
};
this.$('employeeFieldlp0zc3kf').setValue(.uniqBy(users2, 'value'));
};
}
/**
// 处理表单中的成员格式及去重
export function removeFn(arr) {
const obj = {};
arr.forEach(item => {
const employeeFields = item.employeeField_lp0zc3ke || [];
employeeFields.forEach(item1 => {
if (!obj[item1.key]) {
obj[item1.key] = {
key: item1.key,
label: item1.label
};
}
});
});
const result = Object.values(obj);
return result;
}
```
你可能需要在子表的成员组件中获取数据,然后将这些数据添加到主表的多选框。这通常可以通过事件处理程序来实现。
以下是一个基本的步骤:
在子表的成员组件中创建一个方法,该方法用于获取子表的数据。例如,如果你正在使用 Angular,你可以创建一个 getMemberData()
方法。
在主表的多选框中创建一个方法,该方法用于接收和设置选项。例如,你可以创建一个 setOptions(data)
方法。
当子表的成员组件中的数据发生变化时,调用 getMemberData()
方法并将结果传递给主表的 setOptions(data)
方法。
请注意,具体的实现方式取决于你正在使用的编程语言和框架。以上只是一个基本的概念。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。