CN106033471A - 一种处理表单的方法和装置 - Google Patents
一种处理表单的方法和装置 Download PDFInfo
- Publication number
- CN106033471A CN106033471A CN201510126089.0A CN201510126089A CN106033471A CN 106033471 A CN106033471 A CN 106033471A CN 201510126089 A CN201510126089 A CN 201510126089A CN 106033471 A CN106033471 A CN 106033471A
- Authority
- CN
- China
- Prior art keywords
- form item
- item
- amendment
- list
- mapping table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本申请实施例提供了一种处理表单的方法和装置,同时约定了一种表单数据结构,包括表单基础属性,还可以包括对外暴露的写对象和联动关系映射表中的至少一种;基于表单数据对表单中的各表单项进行渲染;该方法还包括:表单项的业务逻辑获取到用户对本表单项的修改信息后,或者本表单项对外暴露的写对象被写入修改信息后,对本表单项的表单基础属性进行相应修改;如果本表单项存在联动关系映射表,则查找本表单项的联动关系映射表,确定本次修改所联动的表单项信息,将本次的修改信息写入所联动的表单项对外暴露的写对象。本申请实施例中在表单数据格式中体现表单项之间的联动关系,任何场景都可以采用相同的表单项业务逻辑,无需维护多份代码,提高了表单的可维护性。
Description
【技术领域】
本申请实施例涉及计算机应用技术领域,特别涉及一种处理表单的方法和装置。
【背景技术】
伴随着互联网内容多样化、格式化的发展,在一些搜集用户信息的表单中出现了内容较多,联动关系较复杂的情况。为了保证功能完整和用户体验,通常采用的方法是:一个场景,一套业务逻辑,并编写一份代码。例如,目前市面上出现的一些MVVM(Model-View-View Model,模型-视图-视图模型)框架或者基于双向绑定的技术,均必须由前端编写代码实现表单HTML(Hyper Text Mark-up Language,超文本标记语言)和数据之间的绑定逻辑,编写代码逐一实现业务需要的联动逻辑。
由于往往各表单项之间是存在一定关联的,例如,一个表单项发生变化,会影响另一个表单项,为了解决这样的维护性问题,代码里必须写明各表单项的联动关系,如果表单中内容过多、联动关系比较复杂时,代码量和复杂度较大。伴随业务内容的膨胀和复杂度的发展,产品代码会越来越多,可维护性不断下降。
【发明内容】
有鉴于此,本申请实施例提供了一种处理表单的方法和装置,以便于提高表单的可维护性。
具体技术方案如下:
本申请实施例提供了一种处理表单的方法,表单数据包括表单基础属性,还可以包括对外暴露的写对象和联动关系映射表中的至少一种;基于所述表单数据对表单中的各表单项进行渲染;所述方法还包括:
表单项的业务逻辑获取到用户对本表单项的修改信息后,或者本表单项对外暴露的写对象被写入修改信息后,对本表单项的表单基础属性进行相应修改;
如果本表单项存在联动关系映射表,则查找本表单项的联动关系映射表,确定本次修改所联动的表单项信息,将本次的修改信息写入所联动的表单项对外暴露的写对象。
根据本申请实施例一优选实施方式,在基于所述表单数据对表单中的各表单项进行渲染包括:
对表单中的各表单项进行遍历;
对当前遍历到的表单项执行:确定与该表单项的数据格式特征相对应的模板;利用确定的模板,生成DOM节点;利用DOM节点和该表单项的数据,实例化该表单项的业务逻辑;
待所有表单项遍历完成后,结束对表单的渲染。
根据本申请实施例一优选实施方式,所述表单项的数据格式特征包括:表单项类型、该表单项是否具有对外暴露的写对象以及该表单项是否具有联动关系映射表。
根据本申请实施例一优选实施方式,所述利用DOM节点和该表单项的数据,实例化该表单项的业务逻辑包括:
将该DOM节点和该表单项的数据进行绑定;以及,
在该表单项的业务逻辑中注册事件。
根据本申请实施例一优选实施方式,所述注册事件包括:
注册表单基础属性的变化事件,该事件触发的执行函数用于根据本表单项的联动关系映射表,将表单基础属性的修改信息写入本次修改所联动的表单项对外暴露的写对象;或者,
注册对外暴露的写对象数据变化的事件,该事件触发的执行函数用于根据写对象被写入的修改信息,修改本表单项的表单基础属性;或者,
注册用户界面UI事件,该事件触发的执行函数用于根据用户通过UI对本表单项的修改信息,修改本表单项的表单基础属性。
根据本申请实施例一优选实施方式,所述对本表单项的表单基础属性进行相应修改包括:
对本表单项的数据进行修改以及对绑定的DOM节点进行修改。
根据本申请实施例一优选实施方式,该方法还包括:发现本表单项对外暴露的写对象被写入修改信息后,查询修改属性生成器以确定所述修改信息对本表单项的属性影响;
依据所述修改信息对本表单项的属性影响,执行所述对本表单项的表单基础属性进行相应修改的步骤。
根据本申请实施例一优选实施方式,所述联动关系映射表包含各联动类型下的值映射表,所述值映射表包括本表单项的属性值与所联动的表单项信息之间的映射关系;
所述查找本表单项的联动关系映射表包括:确定在所述联动关系映射表中本次修改所对应的联动类型的值映射表,在确定出的值映射表中查找本次修改的属性值的映射对象。
根据本申请实施例一优选实施方式,所述联动类型包括以下中的至少一种:
控制显示或隐藏表单项;
修改表单项的可选内容;
修改表单项的自定义属性值;
修改表单项的辅助信息。
本申请实施例还提供了一种表单处理的装置,表单数据包括表单基础属性、对外暴露的写对象以及联动关系映射表;所述装置包括:渲染模块和表单项的业务模块;
所述渲染模块,用于基于所述表单数据对表单中的各表单项进行渲染;
所述表单项的业务模块,用于获取到用户对本表单项的修改信息后,或者本表单项对外暴露的写对象被写入修改信息后,对本表单项的表单基础属性进行相应修改;如果本表单项存在联动关系映射表,则查找本表单项的联动关系映射表,确定本次修改所联动的表单项信息,将本次的修改信息写入所联动的表单项对外暴露的写对象。
根据本申请实施例一优选实施方式,所述渲染模块包括:遍历子模块和渲染子模块;
所述遍历子模块,用于对表单中的各表单项进行遍历,待所有表单项遍历完成后,结束对表单的渲染;
所述渲染子模块,用于对所述遍历子模块当前遍历到的表单项执行:确定与该表单项的数据格式特征相对应的模板;利用确定的模板,生成DOM节点;利用DOM节点和该表单项的数据,实例化该表单项的业务模块。
根据本申请实施例一优选实施方式,所述表单项的数据格式特征包括:表单项类型、该表单项是否具有对外暴露的写对象以及该表单项是否具有联动关系映射表。
根据本申请实施例一优选实施方式,所述渲染子模块在实例化表单项的业务模块时,具体执行:
将DOM节点和该表单项的数据进行绑定;以及,
在该表单项的业务模块中注册事件。
根据本申请实施例一优选实施方式,所述渲染子模块在注册事件时,具体执行:
注册表单基础属性的变化事件,该事件触发的执行函数用于根据本表单项的联动关系映射表,将表单基础属性的修改信息写入本次修改所联动的表单项对外暴露的写对象;或者,
注册对外暴露的写对象数据变化的事件,该事件触发的执行函数用于根据写对象被写入的修改信息,修改本表单项的表单基础属性;或者,
注册用户界面UI事件,该事件触发的执行函数用于根据用户通过UI对本表单项的修改信息,修改本表单项的表单基础属性。
根据本申请实施例一优选实施方式,所述表单项的业务模块在对本表单项的表单基础属性进行相应修改时,具体用于对本表单项的数据进行修改以及对绑定的DOM节点进行修改。
根据本申请实施例一优选实施方式,所述表单项的业务模块,还用于发现本表单项对外暴露的写对象被填入修改信息后,查询修改属性生成器以确定所述修改信息对本表单项的属性影响;依据所述修改信息对本表单项的属性影响,执行所述对本表单项的表单基础属性进行相应修改的操作。
根据本申请实施例一优选实施方式,所述联动关系映射表包含各联动类型下的值映射表,所述值映射表包括本表单项的属性值与所联动的表单项信息之间的映射关系;
所述表单项的业务模块在查找本表单项的联动关系映射表时,具体执行:确定在所述联动关系映射表中本次对表单基础属性的修改所对应的联动类型的值映射表,在确定出的值映射表中查找本次修改的属性值的映射对象。
根据本申请实施例一优选实施方式,所述联动类型包括以下中的至少一种:
控制显示或隐藏表单项;
修改表单项的可选内容;
修改表单项的自定义属性值;
修改表单项的辅助信息。
由以上技术方案可以看出,本申请实施例中在表单数据格式中体现表单项之间的联动关系,任何场景都可以采用相同的表单项业务逻辑,无需维护多份代码,也不会随着业务发展、内容的变动以及联动关系的调整而受影响,提高了表单的可维护性。
【附图说明】
图1为本申请实施例提供的表单数据格式的示意图;
图2为本申请实施例提供的表单项的渲染流程图;
图3为本申请实施例提供的联动修改表单项的流程图;
图4a和图4b分别为本申请实施例提供的一个表单修改前后的实例图;
图5为本申请实施例提供的表单处理装置的结构图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本申请实施例中表单项的联动关系体现在数据中,即采用一种表单数据格式,服务器端按照该表单数据格式输出表单数据,该表单数据格式能够体现表单联动关系。浏览器端从该表单数据中能够直接获取和维护表单项之间的联动关系。下面首先对这种表单数据格式进行描述。
该表单数据格式主要包括三部分内容,如图1中所示:
第一部分:表单基础属性。该部分主要用于承载表单项的基础属性数据,例如,表单项名称(name)、类型(type)、标签(tabel)、默认值(defaultValue)等。不同的表单项可能具有不同的基础属性,这部分基础属性数据不会对外暴露,只有本表单项的业务逻辑能够更改。
第二部分:对外暴露的写对象。如果其他表单项的修改影响到本表单项,则本表单项中对外暴露的写对象会被写入修改信息,本表单项的业务逻辑从该写对象获知由于其他表单项的修改引起本表单项需要进行修改。
在该对外暴露的写对象中可以包括动态可变属性,动态可变属性中包含其他表单项的修改信息,即修改的属性值。动态可变属性的类型可以是String(字符串),也可以是Object(对象)。通常情况下,本表单项只需要知道哪些属性进行了修改,无需知道是哪个表单项的属性进行了修改,即无需知道是哪个表单项的业务逻辑对本表单项的写对象写入了修改信息。
第三部分:联动关系映射表。该联动关系映射表用于体现本表单项与其他表单项之间的联动关系,即本表单项对其他表单项的影响。各联动类型下分别存在一个值映射表,值映射表中包含本表单项的属性值与其所联动的表单项信息之间的映射关系,即本表单项的属性值所联动的表单项。
当本表单项的业务逻辑对本表单项的表单基础属性进行修改后,根据修改的属性值找到所联动的表单项信息,将本次的修改信息写入本表单所联动的表单项对外暴露的写对象。
其中,联动类型可以包括但不限于以下四种:
第一种、控制显示/隐藏表单项。例如,显示/隐藏下拉框列表。
第二种、修改表单项的可选内容。表单项的可选内容指的是表单项提供给用户并供用户进行选择的内容,例如,某表单项提供“男”和“女”两种性别供用户选择。
第三种、修改表单项的自定义属性值。例如,效验规则的修改、提示信息的修改、数据单位的修改、数据有效位的修改等等。
第四种、修改表单项的辅助信息。例如,更新描述文案、标题等。
需要说明的是,一个表单项如果不受其他表单项的影响,则该表单项可以不存在对外暴露的写对象。一个表单项如果不会对其他表单项产生影响,则该表单项可以不存在联动关系映射表。
基于上述的表单数据格式,首先对表单项的渲染进行介绍。针对一个待渲染的表单项,可以如图2中所示的流程:
在201中,获取该表单项的格式特征,从表单项模板集合中确定该表单项的格式特征对应的Model(模板)。
这里表单项的格式特征可以包括:表单项类型、是否具有对外暴露的写对象以及是否具有联动关系映射表。依据格式特征可以从表单项模板集合中查找到对应的Model,Model实际上是HTML模板,其中包含一些界面格式信息,主要用于进行页面布局。
在202中,利用确定的Model,生成DOM(Document Object Model,文件对象模型)节点。
在确定Model后,将Model提供给View(视图),View主要负责从Model中获得数据项然后显示给用户。具体地,可以根据Model生成HTML字符串,将字符串填入页面容器,生成DOM节点。
在203中,利用DOM节点和该表单项的表单数据实例化该表单项的业务逻辑。
本步骤中的业务逻辑的实例化过程主要包括两部分:一部分是DOM节点和表单数据的绑定,另一部分是注册事件。
其中,在生成DOM节点后,DOM节点的引用和表单项的数据会作为参数传递给表单项的业务逻辑,表单项的业务逻辑将将该DOM节点和表单项的数据进行绑定。如果表单数据发生变化,则会相应地修改DOM节点,如果DOM节点发生变化,则会相应地修改数据。这样,表单基础属性的修改实际上就是DOM节点和表单数据的双写过程。
注册事件可以包括:
事件1:注册表单基础属性的变化事件。该事件触发的执行函数为:根据本表单项的联动关系映射表,将表单基础属性的修改信息写入本次修改所联动的表单项对外暴露的写对象。
事件2:注册对外暴露的写对象数据变化时的事件,该事件触发的执行函数为:根据写对象被写入的修改信息,修改本表单项的表单基础属性。
事件3:注册UI(User Interface,用户界面)事件,该UI事件为获取到用户通过UI对表单项进行修改的事件,该事件触发的执行函数为:根据用户通过UI对表单项的修改信息,修改本表单项的表单基础属性。
需要说明的是,图2所示流程为对一个表单项进行渲染的流程,在对表单的渲染过程中,遍历各表单项,针对遍历到的表单项依次执行如图2中所示的渲染流程,从而完成整个表单的渲染,针对各表单项生成的DOM节点构成表单HTML,基于表单数据的上述渲染过程中针对各表单项的DOM节点与表单数据进行了绑定,也就实现了表单HTML与表单数据的绑定。可见,该绑定是在渲染过程中自动实现的,而无需由前端编写代码专门对表单HTML与表单数据进行绑定。
在执行完图2所示的流程后,就完成了对本申请实施例所提供表单处理方式的基础准备工作。一旦用户对某表单项进行了修改,则可以按照如图3中所示的流程进行表单处理。
假设用户对表单项A进行了修改,该修改触发了预先注册的事件3,因此在步骤301中,表单项A的业务逻辑获取到用户对表单项A的修改信息后,对表单项A的表单基础属性进行相应修改。
需要说明的是,由于DOM节点和表单数据的绑定,本申请实施例中对表单基础属性的修改可能会涉及到表单数据的修改和DOM节点的修改,即数据与DOM节点的双写。
对表单基础属性的修改触发了预先注册的事件1,因此执行步骤302,表单项A的业务逻辑查找表单项A的联动关系映射表,找到本次修改所对应联动类型下修改的属性值的映射对象,即本次修改所对应联动类型下修改的属性值所联动的表单项信息。并在步骤303中,将本次的修改信息写入所联动的表单项对外暴露的写对象。
假设表单A修改的属性值所联动的表单项为表单项B,则预先在表单项B的业务逻辑中注册的事件2被触发,则在步骤304中,表单项B的业务逻辑一旦发现对外暴露的写对象被写填入修改信息,则根据该修改信息修改本表单项的表单基础属性。
在表单项B的数据中还存在一个修改属性生成器,通过该修改属性生成器可以确定其他表单项的属性值对本表单项的属性的影响,表单项B的业务逻辑通过该修改属性生成器,确定对外暴露的写对象中填入的修改信息对本表单项的属性影响。依据该查询结果对本表单项的表单基础属性进行修改。其中,修改属性生成器可以包含在表单基础属性中,也可以独立存在。
对表单项B的表单基础属性的修改触发了预先注册的事件1,因此在步骤305中,表单项B的业务逻辑查找表单项B的联动关系映射表,找到本次修改所对应联动类型下修改的属性值的映射对象,即本次修改所对应联动类型下修改的属性值所联动的表单项信息。如果继续联动了其他表单项,则在步骤306中将修改信息写入所联动的表单项对外暴露的写对象,如果没有联动其他表单项,则结束针对本次修改的处理。在图3中,假设表单项B的本次修改假设联动了表单项C,则将修改信息写入表单项C对外暴露的写对象。
表单项C的业务逻辑开始执行与表单项B的业务逻辑相似的操作,在步骤307中,表单项C的业务逻辑一旦发现对外暴露的写对象被填入修改信息,则根据该修改信息查询修改属性生成器,以确定该修改信息对本表单项的属性影响,依据查询结果修改本表单项的表单基础属性。在步骤308中,表单项C的业务逻辑确定表单项C不存在联动关系映射表,或者,联动关系映射表中本次修改信息没有影响到其他表单项,则结束针对本次修改的处理(图3中示出的是这种情况)。
在此举一个例子:
某表单中包括三个存在关联关系的表单项,分别为下拉框A、下拉框B和文本框C。
其中下拉框A的表单数据包括两部分内容:表单基础属性和联动关系映射表。下拉框B的表单数据包括三部分内容:表单基础属性、对外暴露的写对象和联动关系映射表。标题框C的表单数据包括两部分内容:表单基础属性和对外暴露的写对象。
在该表单的渲染过程中,对表单的各表单项进行遍历,分别对遍历到的表单项进行渲染。
在对下拉框A的渲染过程中,该下拉框A的表单项格式特征为:表单项类型为下拉框、存在联动关系映射表。从表单项模板集合中找到与该特征对应,Model 1。将该Model 1提供给View,View根据该Model 1生成HTML字符串,将字符串填入页面容器,生成DOM节点。然后利用生成的DOM节点和下拉框A的表单数据实例化该下拉框A的业务逻辑,包括:将生成的DOM节点和表单数据进行绑定;向下拉框A的业务逻辑注册以下事件:
事件A1、注册表单基础属性变化事件,该事件触发的执行函数为:根据下拉框A的联动关系映射表,将表单基础属性的修改信息写入本次修改所联动的表单项即下拉框B对外暴露的写对象。
事件A2、注册UI事件,该UI事件为获取到用户通过UI对该下拉框A进行修改的事件,该事件触发的执行函数为:根据用户通过UI对下拉框A的修改信息,修改下拉框A的表单基础属性。
在对下拉框B的渲染过程中,该下拉框B的表单项格式特征为:表单项类型为下拉框、存在对外暴露的写对象、存在联动关系映射表。从表单项模板集合中找到与该特征对应,Model 2。将该Model 2提供给View,View根据该Model 2生成HTML字符串,将字符串填入页面容器,生成DOM节点。然后利用生成的DOM节点和下拉框B的表单数据实例化该下拉框B的业务逻辑,包括:将生成的DOM节点和表单数据进行绑定;向下拉框B的业务逻辑注册以下事件:
事件B1、注册表单基础属性变化事件,该事件触发的执行函数为:根据下拉框A的联动关系映射表,将表单基础属性的修改信息写入本次修改所联动的表单项即下拉框B对外暴露的写对象。
事件B2、注册对外暴露的写对象数据变化时的事件,该事件触发的执行函数为:根据写对象被写入的修改信息,修改下拉框B的表单基础属性。
在对文本框C的渲染过程中,该文本框C的表单项格式特征为:表单项类型为文本框、存在对外暴露的写对象。从表单项模板集合中找到与该特征对应,Model 3。将该Model 3提供给View,View根据该Model 3生成HTML字符串,将字符串填入页面容器,生成DOM节点。然后利用生成的DOM节点和文本框C的表单数据实例化该文本框C的业务逻辑,包括:将生成的DOM节点和表单数据进行绑定;向文本框C的业务逻辑注册以下事件:
事件C1、注册对外暴露的写对象数据变化时的事件,该事件触发的执行函数为:根据写对象被写入的修改信息,修改文本框C的表单基础属性。
当表单中所有表单项遍历完成后,完成整个表单的渲染。假设渲染完成后,上面所述的三个表单项显示状况如图4a中所示。
如果用户通过UI对下拉框A中的可选内容从“香港”修改为“台湾”,下拉框A的业务逻辑中注册的事件A2被触发,因此调用对应的执行函数,执行:根据用户对下拉框A的修改信息,修改下拉框A的表单基础属性。将表单基础属性中下拉框A的可选内容数据由“香港”修改为“台湾”,并根据预先的绑定关系,找到对应的DOM节点,例如为select节点,修改其value属性值为“台湾”,从而实现DOM节点和数据的双写。
下拉框A的表单基础属性变化触发了事件A1,调用对应的执行函数,以执行根据下拉框A的联动关系映射表,确定本次修改所对应的联动类型(修改表单项的可选内容)下修改的属性值所联动的表单项为下拉框B,将修改的属性值写入下拉框B对外暴露的写对象。
该修改触发了预先注册于下拉框B的业务逻辑的事件B2,下拉框B的业务逻辑调用对应的执行函数,以执行:根据写对象被写入的修改信息,修改下拉框B的表单基础属性。由写对象被写入的属性值,下拉框B的业务逻辑确定需要将可选内容从“香港”修改为“台湾”。
在执行对下拉框B的表单基础属性的修改后,触发事件B1,调用对应的执行函数,以执行:根据下拉框B的联动映射关系表,确定所联动的表单项为文本框C,将本次的修改的属性值写入文本框C对外暴露的写对象。
该修改触发了预先注册于文本框C的业务逻辑的事件C1,文本框C的业务逻辑调用对应的执行函数,以执行:根据写对象被写入的修改信息,修改文本框C的表单基础属性。由写对象被写入的属性值,文本框C的业务逻辑确定需要将文本内容中的“香港”修改为“台湾”。在修改本表单项的表单基础属性时,除了将数据从“香港”修改为“台湾”之外,还需要将绑定的DOM节点,例如text节点的value中的“香港”修改为“台湾”。由于文本框C的本次修改不会联动其他表单项,因此结束本次对表单的修改。
经过上述修改后,三个表项显示状况可以变为如图4b中所示。
以上是对本申请实施例所提供方法进行的详细描述,下面对本申请实施例提供的装置进行详细描述,本装置的实现同样基于上述的表单数据格式。图5为本申请实施例提供的装置结构图,如图5中所示,该装置主要包括:渲染模块00和表单项的业务模块10。
渲染模块00负责对表单进行渲染,在本申请实施例中基于表单数据对表单中的各表单项进行渲染。具体地,渲染模块00可以包括:遍历子模块01和渲染子模块02。
其中,遍历子模块01负责对表单中的各表单项进行遍历,待所有表单项遍历完成后,结束对表单的渲染。
渲染子模块02负责对遍历子模块当前遍历到的表单项执行:确定与该表单项的数据格式特征相对应的Model;利用确定的Model,生成DOM节点;利用DOM节点和该表单项的数据,实例化该表单项的业务模块。
上述的表单项的数据格式特征可以包括:表单项类型、该表单项是否具有对外暴露的写对象以及该表单项是否具有联动关系映射表。依据格式特征可以从表单项模板集合中查找到对应的Model,Model实际上是HTML模板,其中包含一些界面格式信息,主要用于进行页面布局。
在确定Model后,将Model提供给View(视图),View主要负责从Model中获得数据项然后显示给用户。具体地,可以根据Model生成HTML字符串,将字符串填入页面容器,生成DOM节点。
渲染子模块02在实例化表单项的业务模块时,主要执行以下两部分操作:一部分是将DOM节点和该表单项的数据进行绑定;另一部分是在该表单项的业务模块中注册事件。
其中,将DOM节点和表单数据进行绑定后,如果表单数据发生变化,则会相应地修改DOM节点,如果DOM节点发生变化,则会相应地修改数据。这样,表单基础属性的修改实际上就是DOM节点和表单数据的双写过程。
渲染子模块02在注册事件时,可以具体执行:
注册表单基础属性的变化事件,该事件触发的执行函数用于根据本表单项的联动关系映射表,将表单基础属性的修改信息写入本次修改所联动的表单项对外暴露的写对象。
注册对外暴露的写对象数据变化的事件,该事件触发的执行函数用于根据写对象被写入的修改信息,修改本表单项的表单基础属性。
注册用户界面UI事件,该事件触发的执行函数用于根据用户通过UI对本表单项的修改信息,修改本表单项的表单基础属性。
渲染模块00完成了基础准备工作,一旦发生对某表单项的修改,则由对应表单项的业务模块10执行操作。表单项的业务模块10获取到用户对本表单项的修改信息后,或者本表单项对外暴露的写对象被写入修改信息后,对本表单项的表单基础属性进行相应修改;如果本表单项存在联动关系映射表,则查找本表单项的联动关系映射表,确定本次修改所联动的表单项信息,将本次的修改信息写入所联动的表单项对外暴露的写对象。
其中,表单项的业务模块10在对本表单项的表单基础属性进行相应修改时,由于DOM节点和表单数据的绑定,实际上是对本表单项的数据进行修改以及对绑定的DOM节点进行修改。
表单项的业务模块10一旦发现本表单项对外暴露的写对象被填入修改信息后,查询修改属性生成器以确定修改信息对本表单项的属性影响;依据修改信息对本表单项的属性影响,执行对本表单项的表单基础属性进行相应修改的操作。其中,修改属性生成器也是表单数据中的内容,可以包含在表单基础属性中,也可以独立存在。
联动关系映射表可以包含各联动类型下的值映射表,值映射表包括本表单项的属性值与所联动的表单项信息之间的映射关系。表单项的业务模块10在查找本表单项的联动关系映射表时,确定在联动关系映射表中本次对表单基础属性的修改所对应的联动类型的值映射表,在确定出的值映射表中查找本次修改的属性值的映射对象。
其中联动类型可以包括控制显示或隐藏表单项、修改表单项的可选内容、修改表单项的自定义属性值和修改表单项的辅助信息中的至少一种。
由以上描述可以看出,本申请实施例提供的方法和装置可以具备以下优点:
1)本申请实施例中在表单数据格式中体现表单项之间的联动关系,任何场景都可以采用相同的表单项业务逻辑,无需维护多份代码,也不会随着业务发展、内容的变动以及联动关系的调整而受影响,提高了表单的可维护性。
2)基于本申请实施例提出的表单数据格式对表单进行渲染,在渲染过程中对表单项进行遍历,在对遍历到的表单项进行渲染的过程中,对基于该表单项生成的DOM节点与该表单项的数据进行绑定,从而能够自动实现表单HTML与表单数据的绑定,无需由前端编写代码专门对表单HTML与表单数据进行绑定。
上述装置可以以代码的形式实现,可见如果表单数据采用上述的表单数据格式,在表单数据中体现表单项之间的联动关系,当有表单项发生更改时,表单项的业务逻辑能够根据表单数据的内容进行联动修改。所有表单项采用相同的表单项业务逻辑即可,无需维护多份代码,也不会随着业务的发展、内容的变动、联动关系的调整而影响,变化的仅仅是表单数据,提高了可维护性。
本发明实施例中涉及的表单项可以包括但不限于:单选按钮、多选按钮、下拉框、单行输入框、多行输入框、文本选择框、电话号码输入框、邮箱输入框、密码输入框等。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (18)
1.一种处理表单的方法,其特征在于,表单数据包括表单基础属性,还可以包括对外暴露的写对象和联动关系映射表中的至少一种;基于所述表单数据对表单中的各表单项进行渲染;所述方法还包括:
表单项的业务逻辑获取到用户对本表单项的修改信息后,或者本表单项对外暴露的写对象被写入修改信息后,对本表单项的表单基础属性进行相应修改;
如果本表单项存在联动关系映射表,则查找本表单项的联动关系映射表,确定本次修改所联动的表单项信息,将本次的修改信息写入所联动的表单项对外暴露的写对象。
2.根据权利要求1所述的方法,其特征在于,在基于所述表单数据对表单中的各表单项进行渲染包括:
对表单中的各表单项进行遍历;
对当前遍历到的表单项执行:确定与该表单项的数据格式特征相对应的模板;利用确定的模板,生成DOM节点;利用DOM节点和该表单项的数据,实例化该表单项的业务逻辑;
待所有表单项遍历完成后,结束对表单的渲染。
3.根据权利要求2所述的方法,其特征在于,所述表单项的数据格式特征包括:表单项类型、该表单项是否具有对外暴露的写对象以及该表单项是否具有联动关系映射表。
4.根据权利要求2所述的方法,其特征在于,所述利用DOM节点和该表单项的数据,实例化该表单项的业务逻辑包括:
将该DOM节点和该表单项的数据进行绑定;以及,
在该表单项的业务逻辑中注册事件。
5.根据权利要求4所述的方法,其特征在于,所述注册事件包括:
注册表单基础属性的变化事件,该事件触发的执行函数用于根据本表单项的联动关系映射表,将表单基础属性的修改信息写入本次修改所联动的表单项对外暴露的写对象;或者,
注册对外暴露的写对象数据变化的事件,该事件触发的执行函数用于根据写对象被写入的修改信息,修改本表单项的表单基础属性;或者,
注册用户界面UI事件,该事件触发的执行函数用于根据用户通过UI对本表单项的修改信息,修改本表单项的表单基础属性。
6.根据权利要求4所述的方法,其特征在于,所述对本表单项的表单基础属性进行相应修改包括:
对本表单项的数据进行修改以及对绑定的DOM节点进行修改。
7.根据权利要求1或6所述的方法,其特征在于,该方法还包括:发现本表单项对外暴露的写对象被写入修改信息后,查询修改属性生成器以确定所述修改信息对本表单项的属性影响;
依据所述修改信息对本表单项的属性影响,执行所述对本表单项的表单基础属性进行相应修改的步骤。
8.根据权利要求1、3或5所述的方法,其特征在于,所述联动关系映射表包含各联动类型下的值映射表,所述值映射表包括本表单项的属性值与所联动的表单项信息之间的映射关系;
所述查找本表单项的联动关系映射表包括:确定在所述联动关系映射表中本次修改所对应的联动类型的值映射表,在确定出的值映射表中查找本次修改的属性值的映射对象。
9.根据权利要求8所述的方法,其特征在于,所述联动类型包括以下中的至少一种:
控制显示或隐藏表单项;
修改表单项的可选内容;
修改表单项的自定义属性值;
修改表单项的辅助信息。
10.一种表单处理的装置,其特征在于,表单数据包括表单基础属性、对外暴露的写对象以及联动关系映射表;所述装置包括:渲染模块和表单项的业务模块;
所述渲染模块,用于基于所述表单数据对表单中的各表单项进行渲染;
所述表单项的业务模块,用于获取到用户对本表单项的修改信息后,或者本表单项对外暴露的写对象被写入修改信息后,对本表单项的表单基础属性进行相应修改;如果本表单项存在联动关系映射表,则查找本表单项的联动关系映射表,确定本次修改所联动的表单项信息,将本次的修改信息写入所联动的表单项对外暴露的写对象。
11.根据权利要求10所述的装置,其特征在于,所述渲染模块包括:遍历子模块和渲染子模块;
所述遍历子模块,用于对表单中的各表单项进行遍历,待所有表单项遍历完成后,结束对表单的渲染;
所述渲染子模块,用于对所述遍历子模块当前遍历到的表单项执行:确定与该表单项的数据格式特征相对应的模板;利用确定的模板,生成DOM节点;利用DOM节点和该表单项的数据,实例化该表单项的业务模块。
12.根据权利要求11所述的装置,其特征在于,所述表单项的数据格式特征包括:表单项类型、该表单项是否具有对外暴露的写对象以及该表单项是否具有联动关系映射表。
13.根据权利要求11所述的装置,其特征在于,所述渲染子模块在实例化表单项的业务模块时,具体执行:
将DOM节点和该表单项的数据进行绑定;以及,
在该表单项的业务模块中注册事件。
14.根据权利要求13所述的装置,其特征在于,所述渲染子模块在注册事件时,具体执行:
注册表单基础属性的变化事件,该事件触发的执行函数用于根据本表单项的联动关系映射表,将表单基础属性的修改信息写入本次修改所联动的表单项对外暴露的写对象;或者,
注册对外暴露的写对象数据变化的事件,该事件触发的执行函数用于根据写对象被写入的修改信息,修改本表单项的表单基础属性;或者,
注册用户界面UI事件,该事件触发的执行函数用于根据用户通过UI对本表单项的修改信息,修改本表单项的表单基础属性。
15.根据权利要求13所述的装置,其特征在于,所述表单项的业务模块在对本表单项的表单基础属性进行相应修改时,具体用于对本表单项的数据进行修改以及对绑定的DOM节点进行修改。
16.根据权利要求10或15所述的装置,其特征在于,所述表单项的业务模块,还用于发现本表单项对外暴露的写对象被填入修改信息后,查询修改属性生成器以确定所述修改信息对本表单项的属性影响;依据所述修改信息对本表单项的属性影响,执行所述对本表单项的表单基础属性进行相应修改的操作。
17.根据权利要求10、12或14所述的装置,其特征在于,所述联动关系映射表包含各联动类型下的值映射表,所述值映射表包括本表单项的属性值与所联动的表单项信息之间的映射关系;
所述表单项的业务模块在查找本表单项的联动关系映射表时,具体执行:确定在所述联动关系映射表中本次对表单基础属性的修改所对应的联动类型的值映射表,在确定出的值映射表中查找本次修改的属性值的映射对象。
18.根据权利要求17所述的装置,其特征在于,所述联动类型包括以下中的至少一种:
控制显示或隐藏表单项;
修改表单项的可选内容;
修改表单项的自定义属性值;
修改表单项的辅助信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510126089.0A CN106033471B (zh) | 2015-03-20 | 2015-03-20 | 一种处理表单的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510126089.0A CN106033471B (zh) | 2015-03-20 | 2015-03-20 | 一种处理表单的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106033471A true CN106033471A (zh) | 2016-10-19 |
CN106033471B CN106033471B (zh) | 2019-11-08 |
Family
ID=57149356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510126089.0A Active CN106033471B (zh) | 2015-03-20 | 2015-03-20 | 一种处理表单的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106033471B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843891A (zh) * | 2017-02-06 | 2017-06-13 | 浪潮通用软件有限公司 | 一种基于增量的表单分层扩展方法 |
CN106844514A (zh) * | 2016-12-28 | 2017-06-13 | 平安科技(深圳)有限公司 | 一种页面构建方法及终端 |
CN106960049A (zh) * | 2017-03-31 | 2017-07-18 | 武汉数文科技有限公司 | 考古数据的处理方法、装置及系统 |
CN107463680A (zh) * | 2017-08-07 | 2017-12-12 | 山东浪潮通软信息科技有限公司 | 一种整合单据的方法及装置 |
CN108038142A (zh) * | 2017-11-24 | 2018-05-15 | 平安科技(深圳)有限公司 | 实现多级联动下拉框的方法、电子装置及存储介质 |
CN108228810A (zh) * | 2017-12-29 | 2018-06-29 | 广州京墨医疗科技有限公司 | 表单联动配置方法和系统以及表单更新方法和系统 |
CN109491646A (zh) * | 2018-10-18 | 2019-03-19 | 北京字节跳动网络技术有限公司 | 一种消息录入方法、装置、电子设备及可读介质 |
CN110008449A (zh) * | 2018-01-04 | 2019-07-12 | 北大医疗信息技术有限公司 | 表单控件联动方法、装置、计算机设备和可读存储介质 |
CN110377851A (zh) * | 2019-06-18 | 2019-10-25 | 平安科技(深圳)有限公司 | 多级联动下拉框的实现方法、装置和计算机设备 |
CN110598152A (zh) * | 2019-09-11 | 2019-12-20 | 成都安恒信息技术有限公司 | 一种基于JavaScript的Form表单的事件扩展方法 |
CN112035092A (zh) * | 2020-08-21 | 2020-12-04 | 北京字节跳动网络技术有限公司 | 一种表单的处理方法、装置、设备和可读介质 |
CN112347378A (zh) * | 2019-08-07 | 2021-02-09 | 北京国双科技有限公司 | 表单生成方法及装置 |
CN112799760A (zh) * | 2021-01-26 | 2021-05-14 | 挂号网(杭州)科技有限公司 | 一种表单渲染方法及其装置 |
CN114003220A (zh) * | 2021-12-30 | 2022-02-01 | 思创数码科技股份有限公司 | 工作流模型实现方法、系统、可读存储介质及计算机设备 |
CN115639989A (zh) * | 2022-09-05 | 2023-01-24 | 东方合智数据科技(广东)有限责任公司 | 一种瓦楞纸包装行业的可视化表单配置方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135990A (zh) * | 2011-03-11 | 2011-07-27 | 北京神舟航天软件技术有限公司 | 基于jsp模板的可自由定义的智能表单系统及生成方法 |
CN103984547A (zh) * | 2014-05-14 | 2014-08-13 | 上海上讯信息技术股份有限公司 | 一种表单验证方法及系统 |
CN104112002A (zh) * | 2014-07-14 | 2014-10-22 | 福建星网锐捷网络有限公司 | 一种表单适配的方法、装置和系统 |
-
2015
- 2015-03-20 CN CN201510126089.0A patent/CN106033471B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135990A (zh) * | 2011-03-11 | 2011-07-27 | 北京神舟航天软件技术有限公司 | 基于jsp模板的可自由定义的智能表单系统及生成方法 |
CN103984547A (zh) * | 2014-05-14 | 2014-08-13 | 上海上讯信息技术股份有限公司 | 一种表单验证方法及系统 |
CN104112002A (zh) * | 2014-07-14 | 2014-10-22 | 福建星网锐捷网络有限公司 | 一种表单适配的方法、装置和系统 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844514B (zh) * | 2016-12-28 | 2020-02-21 | 平安科技(深圳)有限公司 | 一种页面构建方法及终端 |
CN106844514A (zh) * | 2016-12-28 | 2017-06-13 | 平安科技(深圳)有限公司 | 一种页面构建方法及终端 |
WO2018120430A1 (zh) * | 2016-12-28 | 2018-07-05 | 平安科技(深圳)有限公司 | 一种页面构建方法、终端、计算机可读存储介质及页面构建设备 |
CN106843891A (zh) * | 2017-02-06 | 2017-06-13 | 浪潮通用软件有限公司 | 一种基于增量的表单分层扩展方法 |
CN106960049A (zh) * | 2017-03-31 | 2017-07-18 | 武汉数文科技有限公司 | 考古数据的处理方法、装置及系统 |
CN107463680A (zh) * | 2017-08-07 | 2017-12-12 | 山东浪潮通软信息科技有限公司 | 一种整合单据的方法及装置 |
CN108038142A (zh) * | 2017-11-24 | 2018-05-15 | 平安科技(深圳)有限公司 | 实现多级联动下拉框的方法、电子装置及存储介质 |
WO2019100645A1 (zh) * | 2017-11-24 | 2019-05-31 | 平安科技(深圳)有限公司 | 实现多级联动下拉框的方法、电子装置及存储介质 |
CN108228810A (zh) * | 2017-12-29 | 2018-06-29 | 广州京墨医疗科技有限公司 | 表单联动配置方法和系统以及表单更新方法和系统 |
CN110008449A (zh) * | 2018-01-04 | 2019-07-12 | 北大医疗信息技术有限公司 | 表单控件联动方法、装置、计算机设备和可读存储介质 |
CN110008449B (zh) * | 2018-01-04 | 2023-07-07 | 北大医疗信息技术有限公司 | 表单控件联动方法、装置、计算机设备和可读存储介质 |
CN109491646A (zh) * | 2018-10-18 | 2019-03-19 | 北京字节跳动网络技术有限公司 | 一种消息录入方法、装置、电子设备及可读介质 |
CN110377851A (zh) * | 2019-06-18 | 2019-10-25 | 平安科技(深圳)有限公司 | 多级联动下拉框的实现方法、装置和计算机设备 |
WO2020253059A1 (zh) * | 2019-06-18 | 2020-12-24 | 平安科技(深圳)有限公司 | 多级联动下拉框的实现方法、装置和计算机设备 |
CN110377851B (zh) * | 2019-06-18 | 2024-02-02 | 平安科技(深圳)有限公司 | 多级联动下拉框的实现方法、装置和计算机设备 |
CN112347378A (zh) * | 2019-08-07 | 2021-02-09 | 北京国双科技有限公司 | 表单生成方法及装置 |
CN110598152A (zh) * | 2019-09-11 | 2019-12-20 | 成都安恒信息技术有限公司 | 一种基于JavaScript的Form表单的事件扩展方法 |
CN112035092A (zh) * | 2020-08-21 | 2020-12-04 | 北京字节跳动网络技术有限公司 | 一种表单的处理方法、装置、设备和可读介质 |
CN112799760A (zh) * | 2021-01-26 | 2021-05-14 | 挂号网(杭州)科技有限公司 | 一种表单渲染方法及其装置 |
CN114003220A (zh) * | 2021-12-30 | 2022-02-01 | 思创数码科技股份有限公司 | 工作流模型实现方法、系统、可读存储介质及计算机设备 |
CN115639989A (zh) * | 2022-09-05 | 2023-01-24 | 东方合智数据科技(广东)有限责任公司 | 一种瓦楞纸包装行业的可视化表单配置方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106033471B (zh) | 2019-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106033471A (zh) | 一种处理表单的方法和装置 | |
CN102779164B (zh) | 一种业务系统及其动态页面的渲染方法 | |
US8055997B2 (en) | System and method for implementing dynamic forms | |
CN104881488B (zh) | 基于关系表的可配置信息抽取方法 | |
WO2018000998A1 (zh) | 界面生成方法、装置和系统 | |
US7996759B2 (en) | Data insertion from a database into a fixed electronic template form that supports overflow data | |
JP5229226B2 (ja) | 情報共有システム、情報共有方法、および情報共有プログラム | |
CN103608779B (zh) | 粘贴数据的或涉及粘贴数据的改进 | |
US20080028302A1 (en) | Method and apparatus for incrementally updating a web page | |
CN110020307A (zh) | 一种客户端视图的绘制方法和装置 | |
CN101739415A (zh) | 一种面向浏览器的网页标注系统 | |
US11010360B2 (en) | Extending tags for information resources | |
CN104572577B (zh) | 数学公式处理方法及装置 | |
CN106469047A (zh) | 一种表单实现方法及装置 | |
WO2010036481A2 (en) | User interface for internet advertisement | |
US20100269093A1 (en) | Content Management System and Method for Generating Dynamic Applications | |
US20040133595A1 (en) | Generation of persistent document object models | |
US8799256B2 (en) | Incorporated web page content | |
US20130232400A1 (en) | Dynamic Data Collection for Rule Based Documents | |
US8756487B2 (en) | System and method for context sensitive content management | |
JP2008537831A (ja) | アプリケーションのユーザインターフェースの仕様作成方法および仕様作成システム | |
CN102193789B (zh) | 一种实现可配置跳转链接的方法和设备 | |
US8862976B1 (en) | Methods and systems for diagnosing document formatting errors | |
CN107203525A (zh) | 数据库的处理方法和装置 | |
JP2001125855A (ja) | 動的Webページ生成プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |