在ExtJS表单中实现复杂的数据结构

在ExtJS表单中实现复杂的数据结构,第1张

概述我们的客户需要相当复杂的数据模型.这意味着数据模型不仅非常庞大(大约500-1000个字段,嵌套在许多对象中),它还需要随时发送和接收所有数据,这是一个字段变化的时间(在它失去焦点之后).我们把它全部作为 JSON.这是一个结构示例: { data: { somefield: 'some content' }, label: { somela 我们的客户需要相当复杂的数据模型.这意味着数据模型不仅非常庞大(大约500-1000个字段,嵌套在许多对象中),它还需要随时发送和接收所有数据,这是一个字段变化的时间(在它失去焦点之后).我们把它全部作为 JSON.这是一个结构示例:

{    data: {        somefIEld: 'some content'    },label: {        somelabel: 'some label text'    },applyable: {        somefIEld: {            visible: false        }    }    someSubForm: {        data: {            somefIEld: 'some content'        },label: {            somelabel: 'some label text'        },anotherSubForm: {            data: {                somefIEld: 'some content'            },label: {                somelabel: 'some label text'            }        }    }}

但这不是全部;该模型还包含标签,工具提示和其他配置.所有数据都需要显示在多个选项卡中,在这两个选项卡中可能会在两个不同的选项卡中显示相同的数据.由于所需的布局(由客户端定义),表单将彼此嵌套.

后端由我们的客户提供,所以我不能在这里做任何改变.

我首先使用带有已定义代理的单个模型来加载JsON.但在那之后我遇到了几个问题.

首先,表单将始终跟踪所有字段,甚至是嵌套表单中的字段
其次是我无法更改任何标签或应用自定义设置
第三,由于大量数据,loadRecord()和getValues()方法运行时间很长.

我的问题是如何解决这个问题,以便每个表单只处理它自己的数据而不是所有数据,我将如何应用自定义设置?

解决方法 这是我现在使用的解决方案:

首先是一些事实:

>我将不得不涵盖多个R / W *** 作(特别是在每个更改和失去焦点的字段之后)
>我总是在每个请求上获得所有数据
>我必须覆盖大量数据(现场数据,商店数据,标签和配置)
>我必须优化这个混乱,以提高性能
>无法在服务器端会话中存储任何内容
>这些表格被一个接一个地嵌套在一起,也可能被拆分或存在两次

这就是我现在要做的事情:

我删除所有关联,并决定只使用一个带有修改的getData方法的模型扩展的模型,该方法支持自定义的根属性,如someSubForm(请参阅问题中的示例代码).这些字段配置为自动,因此需要对读取器或写入器进行更改.
也许不是坚如磐石但它有效.

下一个大问题是形式.表单将始终尝试设置每个字段,即使它是另一种形式.另外我需要设置很多独立标签.所以我不能使用默认表格,我应该扩展吗?但是我该如何以及在哪里开始?经过长时间查看源代码后,在我看来我无法扩展所以我决定创建一个完全自定义的表单类以及自定义mixin类和自定义form.basic类.
为什么?因为我需要形成只查看直接放在此表单中的字段,所以能够设置标签并将模型实例交给任何嵌套表单.

有了它,我现在可以使用自定义选择器注册我自己的监视器实例.哦,我忘了关于我新形式的第一件事;它通过包含名称的属性(如someSubForm)绑定到实体.

这是在使用时使用的

>项目已添加到表单中

>任何字段都获得formID
>任何标签获取formID(不是绑定到表单的标签)
>任何表单获取parentFormID和实例

>已设置监视器选择器
>模型加载到表单中
>从模型中获取数据

其次是现在有3个监控实例

>使用也查找实体的新选择器收集所有字段.因此,任何子表单字段都会被忽略,因为它们有自己的实体
>标签都一样
>收集所有表格

第三个是修改后的loadRecord方法,该方法使用模型的新getData()方法,并将字段,标签和整个模型的特定数据设置为任何形式.

总而言之,我的性能提升了800%.

总结

以上是内存溢出为你收集整理的在ExtJS表单中实现复杂的数据结构全部内容,希望文章能够帮你解决在ExtJS表单中实现复杂的数据结构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1064736.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存