CN106227523A - 一种通用JavaScript数据源组件 - Google Patents
一种通用JavaScript数据源组件 Download PDFInfo
- Publication number
- CN106227523A CN106227523A CN201610565356.9A CN201610565356A CN106227523A CN 106227523 A CN106227523 A CN 106227523A CN 201610565356 A CN201610565356 A CN 201610565356A CN 106227523 A CN106227523 A CN 106227523A
- Authority
- CN
- China
- Prior art keywords
- data
- data source
- array
- javascript
- source component
- 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
- 230000008859 change Effects 0.000 claims abstract description 25
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 238000001914 filtration Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 241000406668 Loxodonta cyclotis Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004899 motility Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种通用JavaScript数据源组件,该数据源组件采用数据源对象包装数组原型对象的方式,将数据源对象模拟为数组,使数据源对象可以直接作为数组操作;使用Object底层API实现可观察对象,直接为可观察对象的属性赋值即可记录数据变更。本发明的一种通用JavaScript数据源组件与现有技术相比,采用原型模式、观察模式实现了覆盖JavaScript数组接口的数据源对象,并且在不污染JavaScript数组原型的情况下,实现了对数组标准接口的扩展,使数据源对象既支持数组接口也支持数据变更捕获等高级功能,实用性强,适用范围广泛,易于推广。
Description
技术领域
本发明涉及计算机软件技术领域,具体地说是一种通用JavaScript数据源组件。
背景技术
随着浏览器技术的发展,Html渲染效率和JavaScript解析速度得到大幅提升。使用Html+JavaScript技术开发绚丽的Web应用越来越流行。各个控件厂商随即推出了各自基于Html5技术的Html控件,每套控件都有各成体系的数据绑定机制。有的控件提供自己的数据源组件,有的控件直接使用JavaScript对象或者数组作为数据源。各成体系的UI控件为我们带来了一系列的问题:
控件厂商的侧重点不同,对数据增量捕获、查询、排序等特性支持程度不同;
控件各自的数据管理机制,使前端业务逻辑代码严重绑定某一特定UI,难以开发一个稳定的业务逻辑框架;
混合使用不同系列UI控件,或者替换已有UI的难度较大。
针对以上问题,本发明提出了一种有效的解决方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种通用JavaScript数据源组件。
一种通用JavaScript数据源组件,该数据源组件采用数据源对象包装数组原型对象的方式,将数据源对象模拟为数组,使数据源对象可以直接作为数组操作;使用Object底层API实现可观察对象,直接为可观察对象的属性赋值即可记录数据变更。
数据源组件包括若干数据源对象,数据源对象实现了JavaScript数组接口,具有过滤、排序、确认数据变更、回滚数据变更、数据变更捕获功能;该数据源对象是数据的容器,其中包括若干数据项。
所述数据项是数据源组件中存储数据的最小单元,对应一个JavaScript对象;数据项中的属性对应数据字段,属性采用Object对象定义属性的API方法defineProperty定义,即使用Object底层API观察对象,直接为观察对象的属性赋值即可记录数据变更。
数据源组件具有数据视图功能,数据视图中包含的数据为视图项,视图项是对数据项的包装。
数据视图时将数据源对象进行过滤、排序后的数据子集用于以不同形式展示的数据,且一个数据源对象创建至少一个数据视图。
本发明的一种通用JavaScript数据源组件和现有技术相比,具有以下有益效果:
本发明的一种通用JavaScript数据源组件,采用原型模式、观察模式实现了覆盖JavaScript数组接口的数据源对象,并且在不污染JavaScript数组原型的情况下,实现了对数组标准接口的扩展,使数据源对象既支持数组接口也支持数据变更捕获等高级功能;因为商业、开源控件均支持JavaScript数组数据源,本发明完全覆盖JavaScript数组接口,所以本发明可以适配各种Html控件,为不同厂商的控件提供统一的数据源管理功能,屏蔽UI控件层的差异,保持业务逻辑代码稳定,实用性强,适用范围广泛,易于推广。
附图说明
附图1为本发明的实现示意图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步说明。
如附图1所示,本发明的一种通用JavaScript数据源组件,适用于开发Html5+JavaScript技术的Html应用。本发明的目的是提供一个独立的数据源组件,该组件不依赖于具体的UI控件,并提供数据变更记录、排序、数据查找等数据管理功能。通过该组件使前端业务逻辑层代码与具体的UI控件解耦,增强前端代码对不同UI的适配性。
本发明采用原型模式、观察模式实现了覆盖JavaScript数组接口的数据源对象,并且在不污染JavaScript数组原型的情况下,实现了对数组标准接口的扩展,使数据源对象既支持数组接口也支持数据变更捕获等高级功能。
本发明总结了Html控件均支持数组数据源的规律,以JavaScript数组接口为标准接口与控件进行交互。该数据源组件独立于UI控件,提供添加数据、删除数据、过滤、排序、增量捕获等功能。
一、该数据源组件采用数据源对象包装数组原型对象的方式,将数据源对象模拟为数组,使数据源对象可以直接作为数组操作;
本发明灵活利用了JavaScript原型对象的原理,使数据源对象具有JavaScript数组的功能。JavaScript使用原型链的方式实现继承,数据源组件使用此种继承方式覆盖数组所有方法较为死板,难以复写数组原因方法并增加扩展。本发明采用直接引用数组原型对象的方式覆盖数组功能并增加扩展。
伪代码如下:
本发明采用的方法避免更改数据源对象的原型链,为数据源对象增加数组接口的同时,保留了使用数据源对象的灵活性,并在数据源对象上简单直接的扩展数组同名方法。
二、使用Object底层API实现可观察对象,直接为可观察对象的属性赋值即可记录数据变更;
一般情况下,JavaScript数组元素的某个属性值被改变后,不会发出任何通知。开发者为了记录属性值变化,通常采用将属性值声明为方法的方式。如:
示例1:
执行上面的代码后,object1.field1的值将变为“Hello World”,但是开发者无法捕获这个变化。
示例2:
通过上面的代码,开发者在为field2赋值时可以捕获变化了,但是严格限制了获取和设置对象属性值的方式,即必须通过方法访问对象的属性。目前许多流行的开发框架均使用这种方式记录数据的变化。
这种方式在与第三方控件进行集成时将遇到困难,如果控件按照示例1中的方式为数据复制,数据源中仍然无法捕获到数据变化。因此示例2的方式仅适用于特定的控件。
本发明使用Object对象的defineProperty方式定义对象属性。示例代码如下:
示例3:
执行上面代码后,将捕获到field3属性值的变化。
本发明采用这种方式创建数据源中的数据,实现了数据值变化的自动捕获。这种方式适用范围广,为数据源组件提供了一种通用的数据值变化捕获机制。
三、可直接用于第三方控件,为第三方控件提供统一的数据源管理功能。
商业控件和开源控件一般均支持数组作为数据源,本发明数据源组件覆盖了JavaScript数组对象的方法,可以直接替换替换数组做为第三方控件的数据源。
数据源组件提供的数据变更记录功能可以直接用在第三方控件。基于上述特征,第三方控件更新数组值的同时,本数据源组件可以自动记录数据变化,具有很好的适配性。
本数据源组件下包含若干数据源对象,数据源对象实现了JavaScript数组接口,并且本身支持过滤、排序、确认数据变更、回滚数据变更、数据变更捕获功能。
数据源对象是数据的容器,其中包含若干数据项。数据项是数据源组件中存储数据的最小单元,对应一个JavaScript对象。数据项中的属性对应数据字段,属性采用Object对象定义属性的API方法defineProperty定义。采用这种方式定义的属性,可以在获取、设置属性值时增加扩展逻辑,本发明采用此种方式实现数据字段的变更捕获。
数据源组件提供数据视图功能。数据视图时对数据源对象进行过滤、排序后的数据子集,用于已不同的形式展示数据。一个数据源对象可以创建多个数据视图。
数据视图中包含的数据为视图项,视图项是对数据项的包装。
以下将通过一个具体实施例,使本发明的上述目标、特征和优点更加清晰、易懂。
实例一,将数据源组件用于以数组为数据源的数据列表控件。该控件为jQuery插件,插件名为datagrid。伪代码如下:
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (5)
1.一种通用JavaScript数据源组件,其特征在于,该数据源组件采用数据源对象包装数组原型对象的方式,将数据源对象模拟为数组,使数据源对象可以直接作为数组操作;使用Object底层API实现可观察对象,直接为可观察对象的属性赋值即可记录数据变更。
2.根据权利要求1所述的一种通用JavaScript数据源组件,其特征在于,数据源组件包括若干数据源对象,数据源对象实现了JavaScript数组接口,具有过滤、排序、确认数据变更、回滚数据变更、数据变更捕获功能;该数据源对象是数据的容器,其中包括若干数据项。
3.根据权利要求2所述的一种通用JavaScript数据源组件,其特征在于,所述数据项是数据源组件中存储数据的最小单元,对应一个JavaScript对象;数据项中的属性对应数据字段,属性采用Object对象定义属性的API方法defineProperty定义,即使用Object底层API观察对象,直接为观察对象的属性赋值即可记录数据变更。
4.根据权利要求1-3任一所述的一种通用JavaScript数据源组件,其特征在于,数据源组件具有数据视图功能,数据视图中包含的数据为视图项,视图项是对数据项的包装。
5.根据权利要求4所述的一种通用JavaScript数据源组件,其特征在于,数据视图时将数据源对象进行过滤、排序后的数据子集用于以不同形式展示的数据,且一个数据源对象创建至少一个数据视图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610565356.9A CN106227523B (zh) | 2016-07-18 | 2016-07-18 | 一种通用JavaScript数据源组件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610565356.9A CN106227523B (zh) | 2016-07-18 | 2016-07-18 | 一种通用JavaScript数据源组件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227523A true CN106227523A (zh) | 2016-12-14 |
CN106227523B CN106227523B (zh) | 2019-03-08 |
Family
ID=57530864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610565356.9A Active CN106227523B (zh) | 2016-07-18 | 2016-07-18 | 一种通用JavaScript数据源组件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227523B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423072A (zh) * | 2017-08-11 | 2017-12-01 | 郑州云海信息技术有限公司 | web页面动态列筛选与搜索表格数据的方法和装置 |
CN110825531A (zh) * | 2018-08-14 | 2020-02-21 | 阿里巴巴集团控股有限公司 | 针对动态类型语言的优化方法、装置、设备以及存储介质 |
CN113268223A (zh) * | 2021-07-20 | 2021-08-17 | 广州市玄武无线科技股份有限公司 | 响应式对象创建方法、系统、介质及其框架的搭建方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109410A1 (en) * | 2004-09-15 | 2008-05-08 | International Business Machines Corporation | Methods for facilitating application development |
CN101650745A (zh) * | 2009-09-10 | 2010-02-17 | 中兴通讯股份有限公司 | 一种基于数据定义的web页面快速生成方法及装置 |
CN102184105A (zh) * | 2011-05-13 | 2011-09-14 | 中国联合网络通信集团有限公司 | 基于组件方式的数据处理方法及数据中心系统 |
CN102750137A (zh) * | 2011-04-22 | 2012-10-24 | 中国科学院沈阳自动化研究所 | 一种面向DeviceNet总线的接口系统 |
CN103677810A (zh) * | 2013-11-21 | 2014-03-26 | 金蝶软件(中国)有限公司 | 业务移动应用系统及其应用方法 |
CN104850590A (zh) * | 2015-04-24 | 2015-08-19 | 百度在线网络技术(北京)有限公司 | 一种生成结构化数据的元数据的方法与装置 |
-
2016
- 2016-07-18 CN CN201610565356.9A patent/CN106227523B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109410A1 (en) * | 2004-09-15 | 2008-05-08 | International Business Machines Corporation | Methods for facilitating application development |
CN101650745A (zh) * | 2009-09-10 | 2010-02-17 | 中兴通讯股份有限公司 | 一种基于数据定义的web页面快速生成方法及装置 |
CN102750137A (zh) * | 2011-04-22 | 2012-10-24 | 中国科学院沈阳自动化研究所 | 一种面向DeviceNet总线的接口系统 |
CN102184105A (zh) * | 2011-05-13 | 2011-09-14 | 中国联合网络通信集团有限公司 | 基于组件方式的数据处理方法及数据中心系统 |
CN103677810A (zh) * | 2013-11-21 | 2014-03-26 | 金蝶软件(中国)有限公司 | 业务移动应用系统及其应用方法 |
CN104850590A (zh) * | 2015-04-24 | 2015-08-19 | 百度在线网络技术(北京)有限公司 | 一种生成结构化数据的元数据的方法与装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423072A (zh) * | 2017-08-11 | 2017-12-01 | 郑州云海信息技术有限公司 | web页面动态列筛选与搜索表格数据的方法和装置 |
CN107423072B (zh) * | 2017-08-11 | 2020-10-30 | 苏州浪潮智能科技有限公司 | web页面动态列筛选与搜索表格数据的方法和装置 |
CN110825531A (zh) * | 2018-08-14 | 2020-02-21 | 阿里巴巴集团控股有限公司 | 针对动态类型语言的优化方法、装置、设备以及存储介质 |
CN110825531B (zh) * | 2018-08-14 | 2023-05-30 | 斑马智行网络(香港)有限公司 | 针对动态类型语言的优化方法、装置、设备以及存储介质 |
CN113268223A (zh) * | 2021-07-20 | 2021-08-17 | 广州市玄武无线科技股份有限公司 | 响应式对象创建方法、系统、介质及其框架的搭建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106227523B (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103618774B (zh) | 一种基于网络行为的资源推荐方法及装置、系统 | |
CN107911487A (zh) | 信息推送方法、装置、服务器及可读存储介质 | |
CN104346464B (zh) | 网页元素信息的处理方法、装置和浏览器客户端 | |
CN105824786A (zh) | 一种电子文档生成方法及装置 | |
CN106227523A (zh) | 一种通用JavaScript数据源组件 | |
CN104346502B (zh) | 一种基于odb++文件转化为可编辑pcb版图的方法 | |
CN106201170A (zh) | 一种应用图标的角标处理方法及终端 | |
CN106156346A (zh) | 图标的自动分类方法和装置 | |
CN107844530A (zh) | 一种数据处理方法、装置、服务器及计算机可读存储介质 | |
CN105989102A (zh) | 一种备份数据的删除方法及装置 | |
CN103488490A (zh) | 一种确定弹窗所对应的应用的方法、装置及终端 | |
CN103577417B (zh) | 清理桌面的方法和装置 | |
CN106354804A (zh) | 文件下载处理方法及装置 | |
CN107765945A (zh) | 一种文件管理方法、装置、终端及计算机可读存储介质 | |
CN103677781A (zh) | 自动化测试的图形用户界面及其创建方法 | |
CN105988837A (zh) | 一种应用程序的安装方法及装置 | |
CN107844519A (zh) | 电子装置、数据库查询脚本生成方法及存储介质 | |
CN106325878B (zh) | 图片批量上传或下载的进度显示方法及装置 | |
CN105630757A (zh) | 一种数据编辑方法及装置 | |
CN104408193B (zh) | 数据可视化模型的处理方法及装置 | |
CN107729485A (zh) | 一种数据管理方法、装置、终端及计算机可读存储介质 | |
CN104572981B (zh) | 一种网页页面缓存处理方法和移动终端设备 | |
CN105373533A (zh) | 一种页面链接地址的检测方法、客户端及装置 | |
CN106446055A (zh) | 网页的生成方法及系统 | |
CN109271083A (zh) | 数据处理方法和装置、计算设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |