如何设置我的变量,以便 D3 数据更新找到正确的对象属性
How to set my variable so D3 data update finds the right object property?
我有一些单选按钮可以通过 D3 与 SVG 交互......
<ul>
<li><input type="radio" name="xyz" onclick="updateMap('someProp1')" />Some label</li>
<li><input type="radio" name="xyz" onclick="updateMap('someProp2')" />Some label</li>
<li><input type="radio" name="xyz" onclick="updateMap('someProp3')" />Some label</li>
etc...
我有这样的数据...
var myData = {
{
"title" : "Some Title",
"desc" : "Some description",
"states" : [ {
"st" : "AK",
"someProp1" : 0.067,
"someProp2" : 0.01,
"someProp3" : 0.468
},
{
"st" : "MI",
"someProp1" : 0.067,
"someProp2" : 0.01,
"someProp3" : 0.468
},
etc...
}
使用 D3,我将 myData 绑定到一堆 SVG 路径组(即美国各州的形状(,然后将这些组绘制为 choropleth,并构建相应的地图图例。
当有人单击单选按钮时,我需要重新绘制 SVG 组、更改图例并更新其他一些内容。通过更简单的可视化,我只是使用了一组 if/else 语句来完成工作。这样。。。
function updateMap(whatSelection){
theSVGshapes.attr({
'height' : function(d){
if (whatSelection === 'someProp1') { return h - yScale(d.someProp1); }
else if (whatSelection === 'someProp2') { return h - yScale(d.someProp2); }
etc....
但是对于这种蛮力方法,我有太多的选择。我真的需要无缝地使用通过单选按钮触发函数时传递的值。像...
function updateMap(whatSelection){
theSVGshapes.attr({
'height' : function(d){ return d.whatSelection; }
etc.....
当然,这是行不通的。控制台告诉我 d 未定义。在其他问题中,我真的要求它将高度设置为d.'someProp1'。
所以,这是一个很长的问法,我不太知道如何表达......这可能就是为什么我在StackExchange的其他地方找不到答案的原因。
即(好吧,尽我所能命名(:如何将变量设置为等于对象的属性值,以便我可以在 D3 中的多个重绘命令中使用该变量?
原则上,有两种方法可以访问对象中的属性值。第一种形式是你在代码中使用的形式:
d.attribute
如果属性的名称是静态的,则此方法可以正常工作。如果不是,第二种形式更好:
d["attribute"]
它实现了完全相同的事情,除了你可以传递任何(动态生成的(字符串。所以在您的情况下,您需要使用
d[whatSelection]
相关文章:
- 更新数据,而不是用javascript和jquery将其添加到我的表中
- JQGrid使用服务器编辑后的更新数据刷新数据
- 使用odata 4的jaydata 1.5和保存/更新数据时的错误
- 使用引导时间选取器时,没有更新数据ng模型值
- AngularJS中超时后没有更新数据
- jQuery动态更新数据键和值
- 在简单的可重用 D3 图表中更新数据
- Node/Express 无法正确更新数据模型
- 如何在jQuery中的单个保存按钮上更新数据和添加数据
- 如何使用Jquery更新数据确认属性中的消息
- 更新数据后保留D3图的位置
- 使用$watch更新数据,ng重复不反映更改
- 在OpenCart中,我们如何实时更新数据
- 表单在每个页面中 - 仅在特定页面上处理它 - 如果当前不在页面上 - 重定向 - 否则 - 使用 AJAX 更新数据
- 调整窗口大小时更新数据属性
- Firebase赢得't更新数据
- Rails和jQuery-尝试使用setTimeout主动更新数据
- Lawnchair.js未更新数据
- 更新数据时的React.js生命周期
- enter() 和 exit() 如何检测 D3 中的更新数据