Browse Source

fix: fix Nested Objects dependencies not effective (#7345)

pull/7493/head
ming4762 6 days ago
committed by GitHub
parent
commit
c48943bc67
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 22
      packages/@core/ui-kit/form-ui/src/form-render/dependencies.ts

22
packages/@core/ui-kit/form-ui/src/form-render/dependencies.ts

@ -6,12 +6,30 @@ import type {
import { computed, ref, watch } from 'vue'; import { computed, ref, watch } from 'vue';
import { isBoolean, isFunction } from '@vben-core/shared/utils'; import { get, isBoolean, isFunction } from '@vben-core/shared/utils';
import { useFormValues } from 'vee-validate'; import { useFormValues } from 'vee-validate';
import { injectRenderFormProps } from './context'; import { injectRenderFormProps } from './context';
/**
* Nested Objects对应的字段值
* @param values
* @param fieldName
*/
function resolveValueByFieldName(
values: Record<string, any>,
fieldName: string,
) {
// vee-validate:[] 表示禁用嵌套
if (fieldName.startsWith('[') && fieldName.endsWith(']')) {
const rawKey = fieldName.slice(1, -1);
return values[rawKey];
}
return get(values, fieldName);
}
export default function useDependencies( export default function useDependencies(
getDependencies: () => FormItemDependencies | undefined, getDependencies: () => FormItemDependencies | undefined,
) { ) {
@ -37,7 +55,7 @@ export default function useDependencies(
// 该字段可能会被多个字段触发 // 该字段可能会被多个字段触发
const triggerFields = getDependencies()?.triggerFields ?? []; const triggerFields = getDependencies()?.triggerFields ?? [];
return triggerFields.map((dep) => { return triggerFields.map((dep) => {
return values.value[dep]; return resolveValueByFieldName(values.value, dep);
}); });
}); });

Loading…
Cancel
Save