lljj-x / vue-json-schema-form

基于Vue/Vue3,Json Schema 和 ElementUi/antd/iview3/naiveUi 等生成 HTML Form 表单,用于活动编辑器、h5编辑器、cms等数据配置;支持可视化生成表单Schema 。 Generate a form using Vue/Vue3, Json Schema and ElementUi/antdv/iview3/naiveUi
https://form.lljj.me/
Apache License 2.0
2.06k stars 420 forks source link

array type cannot get "index" from ui:fieldProps #232

Closed MikeMiller3 closed 1 year ago

MikeMiller3 commented 1 year ago

反馈问题请先查看文档和务必提供详细的复现代码,遵循如下格式,描述不清楚的问题将会直接关闭。

vue和ui框架

vue3、ui框架antd

问题描述

array类型,ui:fieldProps中拿不到数组元素的 index,导致无法进行校验等

期望的结果

array类型,ui:fieldProps中能拿到数组元素的 index

lljj-x commented 1 year ago

目前是不能获取到index,考虑field的通用性,不在array下面就不会有index

lljj-x commented 1 year ago

可以详细描述下你必要 index 的场景

MikeMiller3 commented 1 year ago

可以详细描述下你必要 index 的场景

数组用于描述一个优惠券列表,每个优惠券都有对应的图片url、图片的高度,其中:

lljj-x commented 1 year ago

表单项在数组中时,无法使用parentFormData,拿不到对应的图片url,无法在ImageHeight中自动设置图片默认高度

这个数组是可以parentFormData的 不清楚你的具体场景,可以给复现仓库

MikeMiller3 commented 1 year ago

数组里是可以使用,但是数组里用到了自定义Field,在自定义Field好像用不了parentFormData

lljj-x commented 1 year ago

数组里是可以使用,但是数组里用到了自定义Field,在自定义Field好像用不了parentFormData

自定义Field的话这个值可以自己算一下,表达式和事件中直接用是因为内部在widget中帮你算了,自定义了Filed 相当于自定义了widget的父组件,所以没了。

通过formUtils提供的方法可以计算,伪代码如下

import { formUtils } from '@lljj/vue-json-schema-form';

{
  parentFormData: formUtils.getPathVal(this.rootFormData, this.curNodePath, 1),
  rootFormData: this.rootFormData
}