D3:在style方法中传递对象不起作用

use*_*757 2 d3.js

我正在使用D3进行锻炼.但是,我在将对象传递给.style()方法时遇到问题:

var myStyles = [
  '#268BD2',
  '#BD3613',
  '#D11C24',
  '#C61C6F',
  '#595AB7',
  '#2176C7'
];
Run Code Online (Sandbox Code Playgroud)

下面这段代码正在运行

d3.selectAll('.item') 
  .data(myStyles)
  .style('background',function(d){return d});
Run Code Online (Sandbox Code Playgroud)

但是以下两个代码段都没有工作

d3.selectAll('.item')
  .data(myStyles)
  .style({'background':function(d){return d}});

d3.selectAll('.item')
  .data(myStyles)
  .style({'color':'white','background':function(d){return d}});
Run Code Online (Sandbox Code Playgroud)

请解释这里有什么问题.

Ger*_*ado 5

您可以使用样式和属性来应用对象d3-selection-multi.

首先,您必须参考迷你库:

<script src="https://d3js.org/d3-selection-multi.v0.4.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后,你必须使用styles,而不是style:

.styles({'color':'white','background':function(d){return d}});
Run Code Online (Sandbox Code Playgroud)

你可以在这个小提琴中看到代码,我正在使用一个对象来设置styles:https://jsfiddle.net/gerardofurtado/o54rtrqc/1/

对于属性,请使用attrs而不是attr.

这是API.