0

嗨,我目前正在使用为 Json 构建的 D3 请求调用一组 json 数据。我当前遇到的问题是尝试通过该请求中的数据数组进行索引。目前我只能得到我的数组的第一个 x & y。因此,它会影响我的 D3 拖动,因为每次我拖动一个新对象时,它都会跳回到以前单击鼠标的位置。这是一个片段:

     d3.json("url/path", function(data) {



        var drag = d3.behavior.drag()
             .origin(Object)
             .on("drag", function(d,i) {
             data.locations[0].x += d3.event.dx;
             data.locations[0].y += d3.event.dy;
   d3.select(this).attr("transform", "translate("+data.locations[0].x+","+data.locations[0].y+")")

 });

    .attr("transform", function(d,i) {return  "translate("+data.locations[0].x+","+data.locations[0].y+")" ;})

             });

但是,如果我尝试通过位置的整个数据进行索引,例如

        "translate("+data[i].locations[0].x+","+data[i].locations[0].y+")"

我收到错误“未捕获的类型错误:无法读取未定义的属性‘位置’”

我当前的 json 数据结构如下:

        {
 "section":"a",
 "room":"b",
 "locations":[
  {
     "x":0,
     "y":0
  },
  {
     "x":0,
     "y":0
  },
  {
     "x":0,
     "y":0
  },
  {
     "x":0,
     "y":0
  },
  {
     "x":0,
     "y":0
  },
  {
     "x":0,
     "y":0
  }
  ]
 }

所以我的查询是如何索引我的嵌套数据,所以它读取所有的 x & y 值,而不仅仅是一个 & 影响我的拖动行为。

帮助将不胜感激。

谢谢

4

1 回答 1

0

找到了解决方案。很简单!不知道为什么我以前没有想到它!

 "translate("+data.locations[i].x+","+data.locations[i].y+")"\

我相信就是这样。如果有人有其他解决方案,我愿意倾听。

于 2013-04-30T14:49:54.197 回答