Foxtable(狐表)用户栏目专家坐堂 → Echarts 匿名函数与数据刷新问题


  共有4123人关注过本帖树形打印复制链接

主题:Echarts 匿名函数与数据刷新问题

帅哥哟,离线,有人找我吗?
douglas738888
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1175 积分:8792 威望:0 精华:0 注册:2012/4/18 16:28:00
Echarts 匿名函数与数据刷新问题  发帖心情 Post By:2022/1/11 17:10:00 [显示全部帖子]

例子采用,论坛中老师给出的echarts小例为参考
场景问题:用echarts做4个图表在4个盒子中,需要在js文件中用到匿名函数,避免数据污染,
在不使用异步加载$get调用json取值的情况下,怎样实现通过刷新数据从foxtable传值到js中

请蓝老师帮忙指点指点,谢谢。

参考小例的html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="../echarts.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">

(function () {    //加了立即执行函数,foxtable窗口的刷新数据代码不起作用,只有图表模板,无数据
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

var data = [];  //应该是未传值进来

var option = {
    title: {
        text: '动态数据 + 时间坐标轴'
    },
    tooltip: {
        trigger: 'axis',
        formatter: function (params) {
            params = params[0];
            //var date = new Date(params.name);
            return '日期:' + params.value[0] + ' 压力: ' + params.value[1] + " 质量:" + params.value[2];
        },
        axisPointer: {
            animation: false
        }
    },
    xAxis: {
        type: 'time',
        splitLine: {
            show: false
        }
    },
    yAxis: {
        type: 'value',
        boundaryGap: [0, '100%'],
        splitLine: {
            show: false
        }
    },
    series: [{
        name: '模拟数据',
        type: 'line',
        showSymbol: false,
        hoverAnimation: false,
        data: data
    }]
};

setInterval(function () {
    myChart.setOption({
        series: [{
            data: data
        }]
    });
}, 2000);
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);

})();

    </script>
</body>
</html>


foxtable button click刷新数据代码

Dim web = e.Form.Controls("WebBrowser1").BaseControl
Dim dt As DataTable = DataTables("数据表")
web.Document.InvokeScript("eval", new String() {"data=[]"}) '清空数据

'生成数据
For Each dr As DataRow In dt.Select("", "日期")
    Dim d As Date = dr("日期")
    web.Document.InvokeScript("eval", new String() {"data.push({name: '" & dr("_Identify") & "',value: ['" & d & "',Math.round(" & dr("压力") & "),'" & dr("质量") & "']});" })
Next

 回到顶部
帅哥哟,离线,有人找我吗?
douglas738888
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1175 积分:8792 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2022/1/11 17:57:00 [显示全部帖子]

哦,还是要用ajax请求本地服务器才行,
我偷懒,尝试使用foxtable来启动本地服务器不行,还得安装http-server,并启动; (似乎,不使用本地服务器,ajax是无法获取json数据)
HttpServer.Prefixes.Add("http://127.0.0.1:5500/") 端口是被启用了,但html在浏览器打开用开发者功能,查看,jquery并未得到json
HttpServer.Start()

我另外的测试项目,在VSC中启动GoLive 开启5500是可通过ajax获得json,但是关闭VSC后,端口也不启用,foxtable打开的web也无法得到json
这种情况,应该怎样处理。

 回到顶部