dc.js 图表的 .on 函数显示错误

.on function for dc.js charts showing error

我卡在了一点

dcCharts  = d3.selectAll("div.mychart") 
            .attr("class", "yourchart") 
            .each(function (d, i) { 
            return d ; 
         });

我检索 div 并执行此操作: `

 _.each(dcCharts, function (dcChart) {
    dcChart.on("filtered", function (chart, filter) {
        map.eachLayer(function (layer) {
        map.removeLayer(layer)
        }); 
    drawMap();
    });
    dc.renderAll();
});

我收到这个错误:

Uncaught TypeError: dcChart.on is not a function
    at updateFile:229
    at Function.m.each.m.forEach (underscore-min.js:5)
    at updateFile:228
    at Object.<anonymous> (d3.v3.js:1996)
    at Object.event (d3.v3.js:504)
    at XMLHttpRequest.respond (d3.v3.js:1949)

对于未来的读者,这是一个 follow-up 到 的部分,它提供了一些背景信息。

这里的问题是每个 div 的绑定数据是字符串列名,而不是图表。如果要生成图表数组,我建议在初始化图表时构建数组。 (从我对上一个问题的编辑答案中复制)

var dcCharts = new Array(cols.length);
divs.each(function(col, i) {
  var dimension = cf.dimension(function(d) { return d[col]; });
  var group = dimension.group(); // or however you want to bin them
  var bar = dc.barChart(this) // pass div element as parent/root instead of using selector
      .dimension(dimension)
      .group(group)
      // ...
  dcCharts[i] = bar;
});

现在您的 _.each(dcCharts, ... 应该可以工作了。