从D3中的函数中分配两个类名

时间:2017-07-03 16:05:38

标签: javascript d3.js

我很难为d3元素分配多个函数和类名。我试过了:

.attr('class', (d) => `${d['ORDER_CATALOG_TYPE']}`, (d)`${d['ORDER_STATUS']}`)

(这将第一个返回的函数指定为类,但不指定第二个函数。)

以及

.classed((d) => '${d["ORDER_CATALOG_TYPE"]}', true)

(这将该函数指定为类的名称)

非常感谢对此的任何见解!

2 个答案:

答案 0 :(得分:2)

您可以通过空格分隔几个类来添加:

.attr("class", "class1 class2")

请参阅:https://jsfiddle.net/js84ptey/1/

答案 1 :(得分:0)

能够通过使用嵌套函数将函数的结果指定为类名来创建解决方法。

function getClassAssignment (attString) {

  return function (d) { 
    let element = select(this);
    element.classed (d[attString], true);
    return element.attr('class');
  }
}

这保留了旧的类名,我可以用

指定新的类名
.attr('class', getClassAssignment('ORDER_CATALOG_TYPE'))
.attr('class', getClassAssignment('ORDER_STATUS'))