D3 的选择操作是通用的(如attr
),它接受一个值,或者一个传递数据的函数。我想根据当前选择设置一些样式参数。
来自文档:据我了解,以下场景将起作用
sel.style("stroke", "#000")
sel.style({"stroke": "#000", "stroke-width": "0.5"})
sel.style("stroke", function(d){return "#000"})
但是,我需要的是获取 fn 返回的对象。
var fn = function(d){
return {"stroke": "#000", "stroke-width": "0.5"}
}
sel.style( fn)
上面的例子,我不做任何事情d
,但是,在我的情况下,我会根据d
通过做出决定。
我敢肯定,我可以做类似的事情,
sel.style(`fill`, fillFn)
sel.style(`stroke`, strokeFn)
但是,我正在尝试使我的代码通用,所以我可能不知道我需要提前设置什么样式。
编辑:
我也试过selection.property
,,
sel.property("style", fn);
但有错误
TypeError: Object [object Array] has no method 'property'
但是,在同一个选择中,如果我这样做
sel.style({"stroke": "#000", "stroke-width": "0.5"})
它工作正常。有什么问题?