反馈已提交

网络繁忙

JS实现FVS网页框通信

  • 文档创建者:Alicehyy
  • 历史版本:3
  • 最近更新:Alicehyy 于 2023-10-16
  • 1. 概述

    适用场景:安装了「FineVis数据可视化」插件的用户,可参考本文了解 FVS 模板的相关功能。

    1.1 版本

    报表服务器版本
    插件版本
    11.0.16V1.17

    1.2 应用场景

    在使用 FVS网页框组件 嵌入其他模板或页面时,可能存在一些页面之间通信的需求。例如:

    • 在网页框内点击触发当前 FVS 模板内的其他组件联动。

    • FVS 模板内其他组件操作后,触发网页框内组件接收消息并执行操作。

    1D4C2353-D4D5-4D53-BC32-FE5B93F2DF80.GIF

    注:不支持移动端。

    1.3 实现思路

    使用自定义消息的 API 接口,通过 JavaScript 事件实现通信。接口说明参考文档:FVS网页框与页面通信接口

    2. 示例

    本文示例需要两个模板,在「网页框通信主模板.fvs」中添加网页框组件,嵌入「网页框通信子模板.fvs」,并演示两个模板之间互相通信。

    下面先介绍两个模板的内容设计,再讲解如何实现通信。

    2.1 新建模板

    首先新建两个空白模板,并保存到当前工程目录中。

    1)点击设计器左上角「文件>新建可视化看板」,创建一张空白看板,可自定义名称和尺寸。如下图所示:

    1696926492272814.png

    2)进入新建模板后,点击右上角「保存」,将模板保存到当前工程目录中,便于后续操作。如下图所示:

    Snag_2f5fdc5c.png

    2.2 设计主模板

    2.2.1 准备数据

    打开「网页通信主模板.fvs」,新建数据库查询,输入 SQL 查询语句:SELECT * FROM 销量 where 地区='${area}' ,设置参数默认值为「华东」。如下图所示:

    Snag_2eb97b29.png

    2.2.2 添加组件

    1)添加 文本框控件 ,设置控件名称为 area ,默认值为 华东。

    Snag_2f403ac4.png

    2)添加柱形图组件,绑定数据如下图所示:

    Snag_2f451dec.png

    3)添加网页框组件,网页框路径地址选择「模板路径」,点击「选择模板」选择「网页框通信子模板.fvs」。如下图所示:

    Snag_2f91329c.png

    2.3 设计子模板

    2.3.1 准备数据

    打开「网页通信子模板.fvs」,新建数据库查询,输入 SQL 查询语句:SELECT * FROM 销量 。如下图所示:

    Snag_2f94d3bf.png

    2.3.2 添加组件

    1)添加饼图组件,绑定数据如下图所示:

    Snag_2f993ce6.png

    2)添加文本框控件,设置控件名称为 text0 。如下图所示:

    Snag_2f9be12b.png

    以上基础模板就制作完成了。

    2.4 设置通信

    2.4.1 FVS页面向网页框发送消息

    1)打开「网页框通信主模板.fvs」。要实现通信,需在发送消息之前指定通信的域,可以在「模板>页面加载结束事件」中对整个模板设置。

    JavaScript 代码为:

    duchamp.onlyCommunicateWithOrigins(["http://localhost:8075"]);  //调用API指定通信的域

    步骤如下图所示:

    Snag_30082a9a.png

    2)在「主模板」中,给柱形图添加 JavaScript 点击事件,实现发送消息给子模板。

    JavaScript 代码为:

    duchamp.postMessage(product); //向网页框发送的消息为参数 product ,参数值为柱形图分类名

    步骤如下图所示:

    Snag_2faedcd9.png

    3)在「子模板」中,给文本框控件添加初始化后事件,实现接收主模板的消息,并展示对应的内容。

    JavaScript 代码为:

    window.addEventListener("message", function(event) { 
    duchamp.getWidgetByName("text0").setValue(event.data);
    //event 表示事件,event.data 表示接收到的消息对象
    })

    步骤如下图所示:

    Snag_2fc78c0f.png

    2.4.2 网页框向FVS页面发送消息

    1)在「网页框通信子模板.fvs」中,给饼图添加 JavaScript 点击事件,实现发送消息给主模板。

    JavaScript 代码为:

    window.parent.postMessage(area, 'http://localhost:8075');  //将 area 作为消息发送给指定的域,area 的值为饼图的系列名

    如下图所示:

    Snag_3019b747.png

    2)在「网页框通信主模板.fvs」中,给文本框组件添加初始化后事件,实现接收子模板的消息,并展示对应的内容。

    JavaScript 代码为:

    duchamp.addPostMessageListener((message) => {
    //监听来自网页框的消息,并将其赋值给 area 文本框控件
     duchamp.getWidgetByName("area").setValue(message);
    })

    步骤如下图所示:

    Snag_30318b9f.png

    2.5 效果预览

    分别保存好两个模板,预览主模板,效果如下图所示:

    1D4C2353-D4D5-4D53-BC32-FE5B93F2DF80.GIF

    3. 模板下载

    附件列表


    主题: FineVis数据可视化
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持