CN111078220B - 一种前端状态变更管理的实现方法及系统 - Google Patents

一种前端状态变更管理的实现方法及系统 Download PDF

Info

Publication number
CN111078220B
CN111078220B CN201911314516.2A CN201911314516A CN111078220B CN 111078220 B CN111078220 B CN 111078220B CN 201911314516 A CN201911314516 A CN 201911314516A CN 111078220 B CN111078220 B CN 111078220B
Authority
CN
China
Prior art keywords
interface
service
component
parent
state
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.)
Active
Application number
CN201911314516.2A
Other languages
English (en)
Other versions
CN111078220A (zh
Inventor
周睿
刘牧
高传集
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN201911314516.2A priority Critical patent/CN111078220B/zh
Publication of CN111078220A publication Critical patent/CN111078220A/zh
Application granted granted Critical
Publication of CN111078220B publication Critical patent/CN111078220B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种前端状态变更管理的实现方法及系统,属于前端Angular技术框架,本发明要解决的技术问题为如何实现在界面元素变化时刷新元素状态的逻辑,同时减少重复请求后端的次数,采用的技术方案为:该方法是针对前端界面的数据或者button有状态变化时,通过angular依赖注入机制,在父子组件中共享一个服务,通过该服务实现对父子组件家庭内部状态变更事件的监听,父子组件做出反应,实现前端界面的状态变更实现统一的管理。该系统包括服务创建模块、Subject对象订阅模块、服务实例引入模块、界面元素状态更新模块及Subject的监听取消模块。

Description

一种前端状态变更管理的实现方法及系统
技术领域
本发明属于前端Angular技术框架,主要是涉及angular组件交互和事件监听,具体地说是一种前端状态变更管理的实现方法及系统。
背景技术
Angular是一款优秀的前端框架,现在已经被广泛应用。它的目标是透过MVC模式(MVC)功能增强基于浏览器的应用,使开发和测试变得更加容易,框架采用并扩展了传统HTML,通过双向的数据绑定来适应动态内容,双向的数据绑定允许模型和视图之间的自动同步。
前端对界面的一些元素添加状态管理是主流的趋势。通过界面样式和交互动效让用户可以更加清晰的感知自己的操作。用户操作之后,页面元素的变化可以清晰的展现当前的状态。但是如果用户操作之后,都去编写一段代码去刷新所有相关元素,所有的刷新逻辑是独立的,部分代码是重复的。代码可读性差,重复请求后端数据,缺少统一的逻辑。故如何实现在界面元素变化时刷新元素状态的逻辑,同时减少重复请求后端的次数是目前现有技术中急需解决的技术问题。
发明内容
本发明的技术任务是提供一种前端状态变更管理的实现方法及系统,来解决如何实现在界面元素变化时刷新元素状态的逻辑,同时减少重复请求后端的次数的问题。
本发明的技术任务是按以下方式实现的,一种前端状态变更管理的实现方法,该方法是针对前端界面的数据或者button有状态变化时,通过angular依赖注入机制,在父子组件中共享一个服务,通过该服务实现对父子组件家庭内部状态变更事件的监听,父子组件做出反应,实现前端界面的状态变更实现统一的管理。
其中,该方法的前提条件:在Angular的父子组件之间监控界面元素状态的变更,如果只是监控兄弟组件,可以给其包装一个父组件来实现。
作为优选,该方法的具体如下:
S1、声明一个服务,该服务注入父子组件所在的模块或者注入父组件;
S2、组件内初始化时订阅服务中的Subject对象;
S3、子组件通过构造函数引入服务实例;
S4、当请求后端接口时,设置loading提示信息或者更新中等中间状态,成功返回后,取消loading提示或者中间状态,依据返回结果更新界面元素状态;
S5、父界面关闭时,取消对服务中Subject的监听。
更优地,所述步骤S1中声明一个服务,该服务注入父子组件所在的模块或者注入父组件具体如下:
S101、借助Angular DI的注入器继承机制,该服务实例能在父子组件中共享;
S102、根据前端界面元素状态涉及后端接口的数量,声明对应数量的Subject对象。
更优地,所述步骤S2中组件内初始化时订阅服务中的Subject对象的具体如下:
S201、当该订阅监听到任意一Subject对象推送事件时,获取相关后端的接口,并且把获取的数据通过@Input输入属性,提供给子组件;
S202、父组件中的界面元素和子组件的界面元素就能根据最新的数据信息,更新元素状态。
更优地,所述步骤S202中父组件中的界面元素和子组件的界面元素就能根据最新的数据信息,更新元素状态的具体如下:
S20201、获取配额信息,下一步执行步骤S20202;
S20202、创建按钮根据后端返回的配合变化信息,判断是否有剩余空间配额:
①、若有剩余配额,则执行步骤S20203;
②、若无剩余配额,则跳转至步骤S20204;
S20203、显示创建按钮为正常状态,下一步执行步骤S20205;
S20204、显示创建按钮是不能点击的置灰状态,下一步执行步骤S20205;
S20205、判断界面是否关闭:
①、若是,则跳转至步骤S20206;
②、若否,则跳转至步骤S20201;
S20206、结束。
更优地,所述步骤S3中子组件通过构造函数引入服务实例的具体如下:
用户操作之后,需要界面元素更新状态给用户给直观的反馈时,通过触发服务实例中相关Subject的推送事件,父组件就能获取到推送事件,从而调取后端接口,获取最新信息,刷新父子组件界面元素状态。
一种前端状态变更管理的实现系统,该系统包括,
服务创建模块,用于声明一个服务,该服务注入父子组件所在的模块或者注入父组件;
Subject对象订阅模块,用于组件内初始化时订阅服务中的Subject对象;
服务实例引入模块,用于子组件通过构造函数引入服务实例;
界面元素状态更新模块,用于当请求后端接口时,设置loading提示信息或者更新中等中间状态,成功返回后,取消loading提示或者中间状态,依据返回结果更新界面元素状态;
Subject的监听取消模块,用于父界面关闭时,取消对服务中Subject的监听。
作为优选,所述服务创建模块的工作过程如下:
(1)、借助Angular DI的注入器继承机制,该服务实例能在父子组件中共享;
(2)、根据前端界面元素状态涉及后端接口的数量,声明对应数量的Subject对象。
作为优选,所述Subject对象订阅模块的工作过程如下:
(一)、当该订阅监听到任意一Subject对象推送事件时,获取相关后端的接口,并且把获取的数据通过@Input输入属性,提供给子组件;
(二)、父组件中的界面元素和子组件的界面元素就能根据最新的数据信息,更新元素状态,例如:创建按钮根据后端返回的剩余空间大小信息,显示创建按钮是否是正常状态或者是不能点击的置灰状态。
作为优选,所述服务实例引入模块的工作过程如下:
用户操作之后,需要界面元素更新状态给用户给直观的反馈时,通过触发服务实例中相关Subject的推送事件,父组件就能获取到推送事件,从而调取后端接口,获取最新信息,刷新父子组件界面元素状态。
本发明的前端状态变更管理的实现方法及系统具有以下优点:
(一)本发明给出前端界面元素状态的统一管理的一种实现方式,当有界面元素变化的时候,通过较少的代码,实现刷新元素状态的逻辑,并且减少面请求后端的次数;
(二)本发明减少了冗余代码,提高了代码质量;
(三)本发明优化界面交互,界面元素响应风格一致;
(四)本发明减少了后端请求次数,优化界面响应速度;
(五)本发明能够替代websocket消息推送更新界面元素状态的功能,减少了项目插件的使用;
(六)本发明利用Angular的父子组件共享服务实例的原理,统一管理界面元素状态变更,实现了前端界面元素状态统一管理。
附图说明
下面结合附图对本发明进一步说明。
附图1为父组件中的界面元素和子组件的界面元素就能根据最新的数据信息,更新元素状态的流程框图。
具体实施方式
参照说明书附图和具体实施例对本发明的一种前端状态变更管理的实现方法及系统作以下详细地说明。
实施例1:
本发明的前端状态变更管理的实现方法,该方法是针对前端界面的数据或者button有状态变化时,通过angular依赖注入机制,在父子组件中共享一个服务,通过该服务实现对父子组件家庭内部状态变更事件的监听,父子组件做出反应,实现前端界面的状态变更实现统一的管理。该方法的具体如下:
S1、声明一个服务,该服务注入父子组件所在的模块或者注入父组件;具体如下:
S101、借助Angular DI的注入器继承机制,该服务实例能在父子组件中共享;
S102、根据前端界面元素状态涉及后端接口的数量,声明对应数量的Subject对象。
S2、组件内初始化时订阅服务中的Subject对象;具体如下:
S201、当该订阅监听到任意一Subject对象推送事件时,获取相关后端的接口,并且把获取的数据通过@Input输入属性,提供给子组件;
S202、父组件中的界面元素和子组件的界面元素就能根据最新的数据信息,更新元素状态;如附图1所示,具体如下:
S20201、获取配额信息,下一步执行步骤S20202;
S20202、创建按钮根据后端返回的配合变化信息,判断是否有剩余空间配额:
①、若有剩余配额,则执行步骤S20203;
②、若无剩余配额,则跳转至步骤S20204;
S20203、显示创建按钮为正常状态,下一步执行步骤S20205;
S20204、显示创建按钮是不能点击的置灰状态,下一步执行步骤S20205;
S20205、判断界面是否关闭:
①、若是,则跳转至步骤S20206;
②、若否,则跳转至步骤S20201;
S20206、结束。
S3、子组件通过构造函数引入服务实例;具体如下:
用户操作之后,需要界面元素更新状态给用户给直观的反馈时,通过触发服务实例中相关Subject的推送事件,父组件就能获取到推送事件,从而调取后端接口,获取最新信息,刷新父子组件界面元素状态。
S4、当请求后端接口时,设置loading提示信息或者更新中等中间状态,成功返回后,取消loading提示或者中间状态,依据返回结果更新界面元素状态;
S5、父界面关闭时,取消对服务中Subject的监听。
实施例2:
本发明的前端状态变更管理的实现系统,该系统包括,
服务创建模块,用于声明一个服务,该服务注入父子组件所在的模块或者注入父组件;
Subject对象订阅模块,用于组件内初始化时订阅服务中的Subject对象;
服务实例引入模块,用于子组件通过构造函数引入服务实例;
界面元素状态更新模块,用于当请求后端接口时,设置loading提示信息或者更新中等中间状态,成功返回后,取消loading提示或者中间状态,依据返回结果更新界面元素状态;
Subject的监听取消模块,用于父界面关闭时,取消对服务中Subject的监听。
其中,服务创建模块的工作过程如下:
(1)、借助Angular DI的注入器继承机制,该服务实例能在父子组件中共享;
(2)、根据前端界面元素状态涉及后端接口的数量,声明对应数量的Subject对象。
Subject对象订阅模块的工作过程如下:
(一)、当该订阅监听到任意一Subject对象推送事件时,获取相关后端的接口,并且把获取的数据通过@Input输入属性,提供给子组件;
(二)、父组件中的界面元素和子组件的界面元素就能根据最新的数据信息,更新元素状态,例如:创建按钮根据后端返回的剩余空间大小信息,显示创建按钮是否是正常状态或者是不能点击的置灰状态。
服务实例引入模块的工作过程如下:
用户操作之后,需要界面元素更新状态给用户给直观的反馈时,通过触发服务实例中相关Subject的推送事件,父组件就能获取到推送事件,从而调取后端接口,获取最新信息,刷新父子组件界面元素状态。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (4)

1.一种前端状态变更管理的实现方法,其特征在于,该方法是针对前端界面的数据或者button有状态变化时,通过angular依赖注入机制,在父子组件中共享一个服务,通过该服务实现对父子组件家庭内部状态变更事件的监听,父子组件做出反应,实现前端界面的状态变更实现统一的管理;具体如下:
S1、声明一个服务,该服务注入父子组件所在的模块或者注入父组件;具体如下:
S101、借助Angular DI的注入器继承机制,该服务实例能在父子组件中共享;
S102、根据前端界面元素状态涉及后端接口的数量,声明对应数量的Subject对象;
S2、组件内初始化时订阅服务中的Subject对象;具体如下:
S201、当该订阅监听到任意一Subject对象推送事件时,获取相关后端的接口,并且把获取的数据通过@Input输入属性,提供给子组件;
S202、父组件中的界面元素和子组件的界面元素就能根据最新的数据信息,更新元素状态;
具体如下:
S20201、获取配额信息,下一步执行步骤S20202;
S20202、创建按钮根据后端返回的配合变化信息,判断是否有剩余空间配额:
①、若有剩余配额,则执行步骤S20203;
②、若无剩余配额,则跳转至步骤S20204;
S20203、显示创建按钮为正常状态,下一步执行步骤S20205;
S20204、显示创建按钮是不能点击的置灰状态,下一步执行步骤S20205;
S20205、判断界面是否关闭:
①、若是,则跳转至步骤S20206;
②、若否,则跳转至步骤S20201;
S20206、结束;
S3、子组件通过构造函数引入服务实例;
S4、当请求后端接口时,设置loading提示信息或者更新中间状态,成功返回后,取消loading提示或者中间状态,依据返回结果更新界面元素状态;
S5、父界面关闭时,取消对服务中Subject的监听。
2.根据权利要求1所述的前端状态变更管理的实现方法,其特征在于,所述步骤S3中子组件通过构造函数引入服务实例的具体如下:
用户操作之后,需要界面元素更新状态给用户给直观的反馈时,通过触发服务实例中相关Subject的推送事件,父组件就能获取到推送事件,从而调取后端接口,获取最新信息,刷新父子组件界面元素状态。
3.一种前端状态变更管理的实现系统,其特征在于,该系统包括,
服务创建模块,用于声明一个服务,该服务注入父子组件所在的模块或者注入父组件;
Subject对象订阅模块,用于组件内初始化时订阅服务中的Subject对象;
服务实例引入模块,用于子组件通过构造函数引入服务实例;
界面元素状态更新模块,用于当请求后端接口时,设置loading提示信息或者更新中间状态,成功返回后,取消loading提示或者中间状态,依据返回结果更新界面元素状态;
Subject的监听取消模块,用于父界面关闭时,取消对服务中Subject的监听;
其中,服务创建模块的工作过程如下:
(1)、借助Angular DI的注入器继承机制,该服务实例能在父子组件中共享;
(2)、根据前端界面元素状态涉及后端接口的数量,声明对应数量的Subject对象;
Subject对象订阅模块的工作过程如下:
(一)、当该订阅监听到任意一Subject对象推送事件时,获取相关后端的接口,并且把获取的数据通过@Input输入属性,提供给子组件;
(二)、父组件中的界面元素和子组件的界面元素就能根据最新的数据信息,更新元素状态;具体如下:
S20201、获取配额信息,下一步执行步骤S20202;
S20202、创建按钮根据后端返回的配合变化信息,判断是否有剩余空间配额:
①、若有剩余配额,则执行步骤S20203;
②、若无剩余配额,则跳转至步骤S20204;
S20203、显示创建按钮为正常状态,下一步执行步骤S20205;
S20204、显示创建按钮是不能点击的置灰状态,下一步执行步骤S20205;
S20205、判断界面是否关闭:
①、若是,则跳转至步骤S20206;
②、若否,则跳转至步骤S20201;
S20206、结束。
4.根据权利要求3所述的前端状态变更管理的实现系统,其特征在于,所述服务实例引入模块的工作过程如下:
用户操作之后,需要界面元素更新状态给用户给直观的反馈时,通过触发服务实例中相关Subject的推送事件,父组件就能获取到推送事件,从而调取后端接口,获取最新信息,刷新父子组件界面元素状态。
CN201911314516.2A 2019-12-19 2019-12-19 一种前端状态变更管理的实现方法及系统 Active CN111078220B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911314516.2A CN111078220B (zh) 2019-12-19 2019-12-19 一种前端状态变更管理的实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911314516.2A CN111078220B (zh) 2019-12-19 2019-12-19 一种前端状态变更管理的实现方法及系统

Publications (2)

Publication Number Publication Date
CN111078220A CN111078220A (zh) 2020-04-28
CN111078220B true CN111078220B (zh) 2023-04-21

Family

ID=70315788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911314516.2A Active CN111078220B (zh) 2019-12-19 2019-12-19 一种前端状态变更管理的实现方法及系统

Country Status (1)

Country Link
CN (1) CN111078220B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111611314A (zh) * 2020-05-21 2020-09-01 山东汇贸电子口岸有限公司 一种基于Angular的同一页面上不同组件的同步刷新方法
CN111638932A (zh) * 2020-06-01 2020-09-08 山东汇贸电子口岸有限公司 一种基于angular的公有云专有云高复用的前端共享方法及系统
CN112241282B (zh) * 2020-10-27 2024-02-23 上海万向区块链股份公司 基于react项目的全局状态数据管理方法及系统
CN112507356B (zh) * 2020-12-04 2023-01-03 上海易校信息科技有限公司 一种基于Angular的集中式前端ACL权限控制方法
CN113687872B (zh) * 2021-07-19 2024-03-29 三六零数字安全科技集团有限公司 选择组件控制方法、设备、存储介质及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201621255D0 (en) * 2016-03-25 2017-01-25 Google Inc Navigation application programming interface to accommodate multiple waypoint routing
CN108881213A (zh) * 2018-06-13 2018-11-23 山东浪潮商用系统有限公司 基于内外网安全交互的jms实时消息服务系统
CN109117222A (zh) * 2018-07-24 2019-01-01 北京酷我科技有限公司 一种提示网络加载进度的交互按钮的实现方法
CN110442816A (zh) * 2019-07-12 2019-11-12 平安科技(深圳)有限公司 网页表单配置方法、装置及计算机可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409565B2 (en) * 2017-03-30 2019-09-10 Ice Tea Group Llc Pixel perfect real-time web application framework
US11210353B2 (en) * 2017-06-26 2021-12-28 Nasdaq, Inc. Systems and methods for enterprise web application dashboard management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201621255D0 (en) * 2016-03-25 2017-01-25 Google Inc Navigation application programming interface to accommodate multiple waypoint routing
CN108881213A (zh) * 2018-06-13 2018-11-23 山东浪潮商用系统有限公司 基于内外网安全交互的jms实时消息服务系统
CN109117222A (zh) * 2018-07-24 2019-01-01 北京酷我科技有限公司 一种提示网络加载进度的交互按钮的实现方法
CN110442816A (zh) * 2019-07-12 2019-11-12 平安科技(深圳)有限公司 网页表单配置方法、装置及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘一田 ; 刘士进 ; .一种柔性Web展现框架模型.计算机系统应用.2013,(第12期),全文. *

Also Published As

Publication number Publication date
CN111078220A (zh) 2020-04-28

Similar Documents

Publication Publication Date Title
CN111078220B (zh) 一种前端状态变更管理的实现方法及系统
CN105354013B (zh) 应用界面渲染方法及装置
US7979847B2 (en) Visual debugger for declarative/data-flow applications
US8156137B2 (en) Data processing systems and methods
US8990780B2 (en) Setting breakpoints in optimized instructions
US20150293764A1 (en) Method and system to compose and execute business rules
US20160232191A1 (en) Overlays to modify data objects of source data
US20130151571A1 (en) Interface defined virtual data fields
CN104067276A (zh) 客户机侧最小下载和模拟的页面导航特征
CN110244940A (zh) 优化web应用系统开发的方法及web前端项目结构
CN111552897A (zh) web内容的客户端侧定制和渲染
US8943480B2 (en) Setting breakpoints in optimized instructions
CN107220275B (zh) 数据库句柄处理方法、装置和计算机设备
CN105955567B (zh) 用户界面和进度条的显示方法及装置
US20120124487A1 (en) Issuing behavioral and contextual notifications
US8413121B2 (en) Method and system for storing trace events in a database table
CN105930166B (zh) 一种基于web界面弹出层的方法
CN115809056B (zh) 组件复用实现方法、装置和终端设备、可读存储介质
CN100432938C (zh) 隐式可配置消息队列基用户接口自动同步的系统和方法
CN115758004A (zh) 网页表格的展示方法、装置、计算机可读介质及电子设备
CN109816546A (zh) 一种基于j2ee架构的农场农事管理平台及方法
JP7419293B2 (ja) 命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラム
CN103677846A (zh) 一种SQLite数据库开发工具包及开发方法
US20160018953A1 (en) Systems and methods for generating an interactive user interface from a database
Kliewer EGA/VGA: A programmer's reference guide

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant after: Inspur cloud Information Technology Co.,Ltd.

Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant before: Tidal Cloud Information Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant