组件通信
什么是组件通信?
在IDM中,每一个组件都是相对独立的,并且它们都有可能不在同一个组件包中。但是在实际页面应用中,组件的联动、数据沟通、动作交互等等都是必不可少的,所以IDM制定了一个通信标准,所有组件只要基于此标准,并且搭配组件属性就能实现组件之间的消息通信,从而实现上述页面应用中的通信需求。
通信方法
提示
在非IDM框架环境单独运行组件是无法实现组件之间的互通,因为没有IDM这个中间桥梁,所以如果需要测试组件通信请在IDM框架环境中测试。如果需要判断是否IDM环境可查看标准API-环境变量-env_dev
发送消息
使用方法:
IDM.broadcast.send(Object)
上述使用方法为IDM全局提供的标准API,详细的使用方法和参数可参考标准API-broadcast.send
接收消息
使用方法:
receiveBroadcastMessage(Object)
上述使用方法为组件内置提供的方法,只需要组件内定义即可,根据下面的模式会受到对应组件发送的消息,详细用法建议参考高级开发-内置方法
通信模式
通信模式也可以理解为发送消息范围,并且搭配组件属性能实现用户需求定制范围,实际的方法类型可以参考标准API-broadcast.send的参数说明。归纳总结通信模式有以下几种:
广播模式
当前页面所有的组件(定义了接收方法 receiveBroadcastMessage)都能收到消息,如果
globalSend
为true
则全站都能收到消息。单线模式
用户通过组件属性指定应用页面中的单个组件即为单线发送消息模式,也就是只会给这些组件发送消息。
指定范围模式
用户可以通过组件多重属性来选择发送的消息范围即为指定范围消息模式,只要满足任意一重属性即可发送。
指定组件类型模式
组件可以内置指定组件类名或通过属性让用户配置应用页面的时候指定组件类名即为指定类型模式,不规定页面哪些组件,即使后加入到页面的同类名组件也能收到消息。
提示
IDM的组件通信支持同域下跨页面通信,只需要send
方法的参数globalSend
设置为true
即可
内置通信协议
IDM框架中内置了几种通信协议,通过参数type
指定以下的类型即可实现对应的功能需求,为功能定制一种标准通信方式。
linkageResult
- 含义:组件联动传结果值
主要用于把数据传递给组件本身所需要返回的值,也就是模拟输入的值,或者说当前组件所选中或填写的值。
linkageDemand
含义:组件联动传需求值
主要用于把数据传递给组件本身所需要的展示值、组件所需要的选项值。比如说下拉框的选项,然后下拉框接收传过来的数据进行拦截处理后展示为下拉框的选项值。
linkageReload
含义:联动组件重新加载 or 下拉刷新触发组件重新加载数据
作用1:主要在于对组件的内部进行重新加载。比如说表格与筛选框,筛选框变化后表格的数据需要根据下拉框选择的数据进行重新加载。
作用2:主要通过页面设置的属性下拉刷新中设置的基本属性,当触发了下拉刷新后会给所有组件发送此消息,然后组件内可以针对消息内容做组件相应的功能处理,比如刷新组件的数据等等。
linkageOpenDialog
含义:打开弹窗
主要用于打开拖拽到应用页面上的弹窗组件,动作选择属性控件(actionSelect)内置了打开窗口组件的发送通信消息,可以根据此类型判断打开弹窗
linkageCloseDialog
含义:关闭弹窗
主要用于关闭拖拽到应用页面上的弹窗组件,动作选择属性控件(actionSelect)内置了关闭窗口组件的发送通信消息,可以根据此类型判断关闭弹窗
linkageShowModule
含义:显示组件
主要用于显示拖拽到应用页面上的弹窗组件,动作选择属性控件(actionSelect)内置了显示组件的发送通信消息。
linkageHideModule
含义:隐藏组件
主要用于隐藏拖拽到应用页面上的弹窗组件,动作选择属性控件(actionSelect)内置了隐藏组件的发送通信消息。
linkageResetDefaultValue
含义:重置默认值
主要用于表单类型的控件重置回组件的默认值状态,重置按钮用于发起重置表单的通信,其他组件可根据此类型来进行做相应的重置操作。
pageResize
含义:页面大小调整通知
主要使用
window.onresize
来监听浏览器或页面大小改变而通知所有组件,可以针对性的进行做组件调整或重新渲染。websocket
含义:websocket消息
主要通过页面设置的属性websocket中设置的基本属性,当收到消息时会给所有组件发送此消息,然后组件内可以针对消息内容做组件相应的功能处理,比如刷新组件的数据等等。
pageCommonInterface
含义:页面统一接口返回的结果值
主要通过页面设置的属性页面接口配置的接口,请求成功后会给页面的所有组件发送通信协议为
pageCommonInterface
且messageKey
为结果集名称的消息。userCustomFontSizeRatio
含义:用户个性化定制之改变字体大小比例的消息
用户通过改变字体大小的设置后会通过此协议的消息来通知已经改变过字体大小设置,需要去重新获取一遍字体大小比例getUserFontSizeRatio重新渲染页面样式,目的就是提高用户体验实现不需要刷新页面就能实现应用用户个性化定制的结果。
pageSuspend
含义:页面被挂起的通知消息
当在实现IDM单页面应用的时候如果页面被挂起或者当前页面离开了可视窗口则会被触发所有组件的挂起通知消息。
pageActivated
含义:页面被激活的通知消息
当在实现IDM单页面应用的时候如果页面被激活或者当前页面展示在可视窗口则会被触发所有组件的激活通知消息。
pageDestroy
含义:页面被卸载的通知消息
当在实现IDM单页面应用的时候如果页面被卸载则会触发所有组件的卸载通知消息,注意:卸载分为两类(返回卸载、不缓存离开卸载),同时也会在message中携带(back、noKeep)标识。
提示
如果要使用打开弹窗、关闭弹窗功能需要自行开发弹窗组件来接收消息进行打开显示,或者也可以从GitHub下载IDM官方提供的Layout组件包(内含IDialog
组件)