1

我在我的 Rails 3 应用程序中使用 Highcharts 来允许用户创建和保存图表注释(我使用带有标签的专用散点图系列保存)。我已经能够弄清楚如何将记录保存到数据库中,如下所示:

$.ajax({
    type: "POST",
    url: "<%= service_annotations_path.to_s %>.json",
    data: {
      annotation: {
        name: name,
        time: new Date(x),
        value: y,
      }
    },
    success: function(msg){
      alert(msg);
    }
});

但我正在努力弄清楚如何使用 AJAX 实现删除。问题似乎有两个方面:

  1. 我需要使用通过 JS 从图表中检索到的所选点的 x/y 坐标来查找注释记录,但我不确定如何将其传递回控制器/助手。我想是这样的:

    var annId = "<%= find_annotation(this.x, this.y) %>";
    

    ... 可能会工作,返回一个注释 id,我可以用它来删除对象,但我不确定如何从 JavaScript 访问 Ruby 中的那些 JS 坐标变量 [this.x 和 this.y] ......我是什么'正在阅读表明它通常不会完成。(以及我发现的用于规避似乎已被弃用的示例。)

  2. 然后,我需要弄清楚实际的删除 AJAX ......

    $.ajax({
        type: "DELETE",
        url: '<%= service_annotations_path.to_s %>' +  '/' + this.id + '.json',
        data: {
          annotation: {
            time: new Date(this.x),
            value: this.y,
          }
        },
        success: function(msg){
          alert(msg);
        }
    });
    

    由于它嵌套在服务资源下,这本身就很复杂。

我认为如果我能完成第一部分,将 x 和 y 参数从 JS 传递给 Ruby 应该是可行的。非常感谢任何指针。

4

1 回答 1

0

Highchart 为系列的点提供各种事件。

http://api.highcharts.com/highcharts#plotOptions.series.point.events

您可以使用获取点的 x 和 y

plotOptions: {
            series: {
                cursor: 'pointer',
                point: {
                    events: {
                        click: function() {
                            console.log(this);
                            alert ('X: '+ this.x +', Y: '+ this.y);
                        }
                    }
                }
            }
        }
于 2012-09-11T07:52:20.670 回答