Axure引用ECharts图表 &解决火狐浏览器出错

Axure原型添加Echarts图表,没耐心看文章的可以直接下载示例 Axure中使用ECharts图表示例

1. 打开Axure新建页面

2. 页面添加元件

复制代码
元件类型随意,矩形、动态面板、热区、图片 甚至段落都可以

3. 命名元件

复制代码
随意命名,单个页面用到多个图表时名称要区别定义

4. 新增交互

复制代码
选择 "载入" 时,执行动作选择 "打开链接",链接到选择 "连接到外部URL",在链接输入框的后边,点击 fx 打开窗口,输入JS函数脚本

5. JS内容

javascript 复制代码
javascript:$axure.utils.loadJS('https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js');
setTimeout(function(){
var dom =$('[data-label=[[This.name]]]').get(0);
var Chart = echarts.init(dom);
var option = { };
if (option && typeof option === "object"){Chart.setOption(option, true);}}, 500);

以下代码块中为基础的js内容,其中 option={}; 为图表的各个参数项;

打开ECharts官方示例,https://echarts.apache.org/zh/index.html 选择需要的图表,进行在线编辑,完成后将在线编辑的内容全部复制出,替换基础js代码中的 option 部分;

以下为替换完成后所有的js代码

javascript 复制代码
javascript:$axure.utils.loadJS('https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js');
setTimeout(function(){
var dom =$('[data-label=[[This.name]]]').get(0);
var Chart = echarts.init(dom);
var option = {
  tooltip: {
    trigger: 'item'
  },
  legend: {
    top: '5%',
    left: 'center'
  },
  series: [
    {
      name: 'Access From',
      type: 'pie',
      radius: ['40%', '70%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderRadius: 10,
        borderColor: '#fff',
        borderWidth: 2
      },
      label: {
        show: false,
        position: 'center'
      },
      emphasis: {
        label: {
          show: true,
          fontSize: 40,
          fontWeight: 'bold'
        }
      },
      labelLine: {
        show: false
      },
      data: [
        { value: 1048, name: 'Search Engine' },
        { value: 735, name: 'Direct' },
        { value: 580, name: 'Email' },
        { value: 484, name: 'Union Ads' },
        { value: 300, name: 'Video Ads' }
      ]
    }
  ]
};
if (option && typeof option === "object"){Chart.setOption(option, true);}}, 500);

内容过长,可以先在NotePad++等文本编辑器中编辑, 编辑完后再复制到Axure中

编辑完成保存后,发布预览

运行成功效果图

示例中通过 [[This.name]] 绑定了当前元件

以上的方式支持大部分浏览器预览,但是火狐浏览器打不开,只显示一个错误代码、、、、

错误原因大概因为 火狐下第一次加载Echarts的js未成功,然后在Axure中的setTimout的js函数,无法被有效执行

火狐浏览器下设计方式

火狐浏览器下按照以下方式设计

新建页面、添加元件、命名 这些都与上边描述一致

在添加交互时,同样选择在加载时打开外部URL链接,链接的内容修改为

javascript 复制代码
javascript:
var script = document.createElement('script');
script.type ='text/javascript';
script.src ='https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js';
document.head.appendChild(script);
var dom =$('[data-label=[[This.name]]]').get(0);
var myChart = echarts.init(dom);

编辑完成链接后,继续点击"添加动作",使用Axure模拟添加定时函数;

继续点击"添加动作",选择"触发事件" > "尺寸改变";

新增交互 "尺寸改变" 时 "打开链接",链接为以下内容

javascript 复制代码
javascript:
var script = document.createElement('script');
script.type ='text/javascript';
script.src ='https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js';
document.head.appendChild(script);
var dom =$('[data-label=[[This.name]]]').get(0);
var myChart = echarts.init(dom);
var option = {
  tooltip: {
    trigger: 'item'
  },
  legend: {
    top: '5%',
    left: 'center'
  },
  series: [
    {
      name: 'Access From',
      type: 'pie',
      radius: ['40%', '70%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderRadius: 10,
        borderColor: '#fff',
        borderWidth: 2
      },
      label: {
        show: false,
        position: 'center'
      },
      emphasis: {
        label: {
          show: true,
          fontSize: 40,
          fontWeight: 'bold'
        }
      },
      labelLine: {
        show: false
      },
      data: [
        { value: 1048, name: 'Search Engine' },
        { value: 735, name: 'Direct' },
        { value: 580, name: 'Email' },
        { value: 484, name: 'Union Ads' },
        { value: 300, name: 'Video Ads' }
      ]
    }
  ]
};
if (option && typeof option === 'object'){
   myChart.setOption(option, true);    
}

具体步骤如下图所示
编辑完成后,发布预览

火狐浏览器展示效果图

相关推荐
Java后端的Ai之路3 分钟前
React 快速入门到精通教程:从零基础到能写项目
前端·react.js·前端框架
是上好佳佳佳呀4 分钟前
【前端(九)】CSS Transform 2D/3D 变换笔记:分清两个原点,搞懂多重变换
前端·css·笔记
许国栋_9 分钟前
ESG驱动下的产品战略调整:企业该如何从合规走向竞争力重构?
安全·产品运营·产品经理·策略模式
|晴 天|9 小时前
Vue 3 + TypeScript + Element Plus 博客系统开发总结与思考
前端·vue.js·typescript
猫3289 小时前
v-cloak
前端·javascript·vue.js
旷世奇才李先生10 小时前
Vue 3\+Vite\+Pinia实战:企业级前端项目架构设计
前端·javascript·vue.js
Ulyanov10 小时前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真
ai_coder_ai11 小时前
自动化脚本ui编程之垂直滚动布局(vscroll)
ui·autojs·自动化脚本·冰狐智能辅助·easyclick
SoaringHeart11 小时前
Flutter进阶:用OverlayEntry 实现所有弹窗效果
前端·flutter
IT_陈寒13 小时前
Vite静态资源加载把我坑惨了
前端·人工智能·后端