javascript - 防止谷歌图表中的默认排序事件

标签 javascript events sorting charts google-visualization

是否可以防止在 google 图表表对象中触发默认排序事件?如果我们以 code playground 中的示例为例这怎么能被调整以便例如。单击“年龄”标题时防止排序发生?

即对表格图表不做任何事情(我的想法是在所有标题中进行默认排序,除了一个标题,其中另一个点击事件(由外部 js 中的事件监听器管理将触发)将被触发但不触发排序事件(因此没有出现小排序箭头))

例如,下面的代码不起作用(它仍然调用默认的排序方法):

function drawVisualization() {
var table = new google.visualization.Table(document.getElementById('table'));
table.draw(sortData, null);

var chart = new google.visualization.BarChart(document.getElementById('chart'));
chart.draw(sortData, null);

google.visualization.events.addListener(table, 'sort',
  function(event) {
    if(event.column != 1){
      sortData.sort([{column: event.column, desc: !event.ascending}]);
      chart.draw(sortData, null);
    }
  }
);
}

谢谢指点

最佳答案

将表格的sort 选项设置为event。这将禁用默认排序并使图表在单击标题时抛出“排序”事件。如果您想正确跟踪排序,您需要使用 sortColumnsortAscending 选项集重新绘制图表:

var options = {
    sort: 'event'
};
google.visualization.events.addListener(table, 'sort', function(event) {
    if(event.column != 1) {
        options.sortColumn = event.column;
        options.sortAscending = event.ascending;
        sortData.sort([{column: event.column, desc: !event.ascending}]);
        table.draw(sortData, options);
    }
});

[编辑 - 使用自定义表格排序功能的完整代码,基于 playground 代码]

function drawVisualization() {
    var options = {
        sort: 'event'
    };
    var table = new google.visualization.Table(document.getElementById('table'));
    table.draw(sortData, options);

    var chart = new google.visualization.BarChart(document.getElementById('chart'));
    chart.draw(sortData, null);

    google.visualization.events.addListener(table, 'sort', function(event) {
        if(event.column != 1) {
            options.sortColumn = event.column;
            options.sortAscending = event.ascending;
            sortData.sort([{column: event.column, desc: !event.ascending}]);
            table.draw(sortData, options);
        }
    });
}

关于javascript - 防止谷歌图表中的默认排序事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166551/

相关文章:

c# - 如何访问 VSTO Words 加载项中的 KeyUp、KeyDown 事件?

powershell - 在 powershell 中对 `docker ps` 的输出进行排序,同时将表头保持在顶部

javascript - 在 ionic 中使用 ng-click 时,类延迟更改为 'activated'

javascript - 获取 "prompt aborted by user"javascript 异常

javascript - 你能用javascript在运行时修改div的onmousedown吗

algorithm - 减少匹配器的最佳方法

mysql - 使用 TSQL 对字符串中的整数进行排序

javascript - jquery 中的清除队列不适用于悬停时延迟显示隐藏

javascript - 从与 JavaScript 中的字符串匹配的数组中删除多个项目

c - libevent:在文件更改时引发事件