【问题标题】:Moving javascript data series to html data attribute breaks Highchart将 javascript 数据系列移动到 html 数据属性会破坏 Highchart
【发布时间】:2013-08-10 22:18:42
【问题描述】:

我正在尝试按照这个示例将 Highcharts 图表添加到 Rails 应用程序

http://www.highcharts.com/demo/column-stacked

当我使用 javascript 配置图表时一切正常,但由于内容是动态的,我想将系列数据移动到数据属性上。

我在函数中修改了一行(查看上面链接中的选项)

series: $('#container').data('chart')

在视图中

<div id="container" style="width:100%;height:172px;" data-chart='<%= @data %>' ></div>

在控制器中

@data = [{
                name: 'John',
                data: [5, 3, 4, 7, 2]
            }, {
                name: 'Jane',
                data: [2, 2, 3, 2, 1]
            }, {
                name: 'Joe',
                data: [3, 4, 4, 2, 5]
            }]

现在我没有像示例中那样显示正确的图表,而是有一个非常混乱的图表,其中包含大约 100 个数据系列。

在 javascript 和 ruby​​ 下处理此数据数组的方式是否会导致这种差异?

【问题讨论】:

    标签: ruby-on-rails highcharts


    【解决方案1】:

    尝试在视图中以content_tag 将数据传递给客户端,并将@data 重命名为@my_data:

    <%= content_tag "div", id: "chart_data", data: {my_data: @my_data} do %>
    <% end %>
    

    重新加载页面,打开 JavaScript 控制台,使用 jQuery 查看 JavaScript 对象的格式是否正确:

    $('#chart_data').data('my_data')
    

    在一个实际的示例中,您需要将一组 Ruby 对象传递给客户端,这种技术适用于将 Ruby 对象数组转换为 JS 对象数组。有个好RailsCast on passing data to JS

    【讨论】:

    • 嗯,这行得通,但我不明白为什么。将其呈现为 content_tag 而不是直接编码 div 对数据属性的构造方式有何影响?
    • @AndyHarvey - 我认为data: {my_data: @my_data} 在某些时候会在@my_data 上调用to_jsondata-chart=&lt;%= @data.to_json %&gt; 也可能有效。使用 jQuery 检查两种解决方案之间的差异。如果您想出更多信息,请告诉我,因为我很感兴趣。谢谢!
    猜你喜欢
    • 2012-02-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多