Farris表单表达式模块分析
发布网友
发布时间:2024-10-20 01:17
我来回答
共1个回答
热心网友
时间:2024-11-05 01:08
目录:
Farris表单表达式模块概述
Farris表单支持界面元素与表达式关联,例如控制日期字段要早于一个日期。
校验表达式运行效果与设置表达式
表达式模块关联作用:仓储、UI变量、只读、依赖、相关、校验、必填、可见
界面初始时,表单解析表达式,前端事件触发时(UI变量变化、仓储变化、绑定数据变化)重新解析表达式
表达式的取值影响预期的关联作用
以字典单据为例,介绍表达式模块功能与系统执行步骤
表达式模块涉及的范围抽象为功能模块,前端界面组件执行此功能
系统执行步骤包括:包和类视图,表达式模块依赖注入器模块、网络模块、事件流模块和前端事件监听器
字典单据的类包括DictModule、RootComponent等,涉及的类分布在@farris/devkit、@farris/command-services、@farris/expression-engine三个npm包
界面组件主要为@farris/devkit的FrameComponent和FrameContext,前端事件监听器为@farris/devkit的ChangeListener,注入器模块主要为@angular/core的Injector类,网络模块主要为@angular/common/http的HttpClient类,事件流模块主要为rxjs的Subject类
表单集成表达式功能的实现
集成表达式功能的步骤包括:升级依赖的NPM包版本,增加必要的基础设施提供者,字典单据的DictModule和RootComponent,增加表达式模块相关提供者,增加表达式声明文件,设置组件和表达式的绑定
步骤1:界面组件请求注入器模块启动表达式模块
步骤2:获得表达式对象数组
步骤3:监听前端事件,表达式模块请求事件流模块监听前端事件监听器广播的事件
步骤4:绑定表达式值到界面元素属性
步骤5:解析每个表达式对象,将表达式的取值存储至表达式标识值映射
步骤6:依据表达式对象值产生预期作用,作用分为仓储、UI变量、只读、依赖、相关、校验、必填、可见
以校验表达式为例介绍作用过程,调试思路链接