-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
表单解析器 · 开发教程 #32
Comments
怎么没有看到表单解析器的开发教程呢 |
同问呢 |
说好的表单解析开发教程呢, 大佬是不是忘记弄了 |
parser啊大哥 大佬开始就写了 这是parser的解说 看下router路由 可以直接用的 扩展的话稍微看下你就懂了不用人家说 并且 编辑的时候运行有单独的iframe引入 已经和这功能解耦了 |
我在parser上通过异步下载json 回来进行解析成页面,所有的表单项都能出来,唯独是表单的校验功能不正常,有大佬能正常校验的吗 |
请问如果设计一个标签组件,内容是一个行容器,可行吗?想了挺久,没想到合适的解决方案,恳请各位大佬指点一下 |
动态数据,除了在formConf 内直接构造外(即在formConf数据未到 parser 解析渲染前),还有其它方式可以动态构造吗 |
请问你的表单校验问题解决了吗? |
同问,为什么我的表单本地数据可以服务端异步传来的解析不成功? |
表单校验的初始化应该是在获取到数据后,可以watch数据,拿到后再构建表单校验规则 |
这是来自QQ邮箱的自动回复邮件。您发送的邮件已收到,任瀚
|
怎么异步解析数据呢?望指教 |
这是来自QQ邮箱的自动回复邮件。您发送的邮件已收到,任瀚
|
请问 解析时候 我加了一个题目逻辑的设置,把不需要的题目隐藏,用display:none; 然后radio的选种样式就没有了,这个有遇到吗 怎么处理 |
这是来自QQ邮箱的自动回复邮件。您发送的邮件已收到,任瀚
|
大侠们,自定义组件应该在哪里获取__config__的数据 |
这是来自QQ邮箱的自动回复邮件。您发送的邮件已收到,任瀚
|
本文描述的解析器,是一个能将form-generator导出的json表单,解析为一个真实表单的程序。
接下来的行文中使用【json表单】表示form-generator导出的json表单。
布局
json表单目前支持两种布局:
colFormItem和rowFormItem
1.1 colFormItem布局
colFormItem布局(以el-input为例)对应的json形式如下:
colFormItem布局对应的目标实际代码如下 :
在这个json到xml的解析过程中,form-generator的parser使用jsx来完成
1.2 rowFormItem布局
rowFormItem布局对应的json形式如下:
对应的目标代码如下:
同样使用jsx来完成布局解析:
值得注意的是,json表单支持嵌套; 通过__config__.children记录嵌套关系。使用renderChildren递归解析。(目前仅对rowFormItem布局的children做解析)
完整的代码,请阅读parse源码,此链接中的版本并不算复杂。
数据和逻辑
传统的vue格式表单,我们可能需要写如下格式的js,完成element UI表单的数据和逻辑。
对于解析器来说,这是一个抽象的过程:
构建表单数据实现如下:
请阅读,源码 methods 部分。这块和你日常vue编程差不多,只不过属性都是抽象的。
JSON表单结构说明
上边的一系列操作,都是建立在理解json表单都有哪些内容的基础上的。详细请参阅JSON参数对照表
form-generator中的render.js
render.js就是对vue的render函数的简单定制封装。如果你还不理解vue的render函数,请移步至:渲染函数 & JSX
render.js实现的功能是将json表单中的__config__.tag解析为具体的vue组件; 其工作过程可以理解为以下3个部分:
关于拓展和讨论
本项目仅仅是开了个表单渲染头;实际要根据需求的差异,要做不一样的定制。之所以在issue写文章,是希望各位能充分利用好下边的评论功能,大家友好探讨。
系列教程:
《表单设计器 · 开发教程》
《表单解析器 · 开发教程》
《vue代码生成器 · 开发教程》
《vue代码预览器 · 开发教程》
The text was updated successfully, but these errors were encountered: