Javascript / d3将函数参数传递给内部匿名函数

时间:2015-07-13 14:37:14

标签: javascript function d3.js parameter-passing

我的Javascript技能相当基本,但足够先进,让我能够使用d3库设计一些相对复杂的图表。我现在已经到了可以重复使用我的代码的地步,这就是我遇到优秀API文档无法让我过去的第一道障碍。< / p>

例如,在我的大多数图表中,我想添加一个图例。我有一些基本代码,为传奇添加一个svg组,看起来像这样

var legend = chartContainer.selectAll(".legend")
  .data(d3.map(data, function(d){return d.FIELDNAME;}).keys())
  .enter().append("g")
  .attr("class", "legend")
  .attr("transform", function(d, i) { return "translate(0," + (((height/3)) + (i*20)) + ")"; });

我希望能够做的是向函数添加一个参数,该函数允许我设置图例中数据集中的哪个字段。像下面的东西......但实际上有效:)

function addLegend(legendKey) {

var legend = chartContainer.selectAll(".legend")
  .data(d3.map(data, function(d){return d.legendKey;}).keys())
  .enter().append("g")
  .attr("class", "legend")
  .attr("transform", function(d, i) { return "translate(0," + (((height/3)) + (i*20)) + ")"; });
// rest of the legend code
}

通过

调用
addLegend("FIELDNAME");

最后,可以理解(也许)这个也没有用

function helper(legendKey){
  return legendKey;
}

function addLegend(helper) {

var legend = chartContainer.selectAll(".legend")
.data(d3.map(data, function test (d, addLegend){return d.addLegend;}).keys())
.enter().append("g")
.attr("class", "legend")
.attr("transform", function(d, i) { return "translate(0," + (((height/3)) + (i*20)) + ")"; });
 // rest of the legend code
}

addLegend(helper("agent"))

非常感谢任何帮助。

0 个答案:

没有答案