json 配列を正確にループして、位置の ID と d3 オブジェクトの ID を一致させる必要があります。
配列のスニペットは次のとおりです (Ruby on Rails が生成されます)。
{
"name": "Test",
"locations": [{
"city_id": 1,
"x": 0,
"y": 0
}, {
"city_id": 2,
"x": 0,
"y": 0
}, {
"city_id": 3,
"x": 0,
"y": 0
}, {
"city_id": 118,
"x": 0,
"y": 0
}, {
"city_id": 117,
"x": 0,
"y": 0
},
],
"city": [{
"id": 118,
"name": "London"
}, {
"id": 117,
"name": "New York"
}, {
"id": 1,
"name": "Miami"
}, {
"id": 3,
"name": "Duabi"
}, {
"id": 2,
"name": "Hong Kong"
}
]
}
x & yi の値を収集するには、ドラッグ & ドロップ機能があります。オブジェクトをドロップすると、ポストを送信して x と y の値の位置を更新します。ただし、ループが十分に具体的ではないため、正しいIDで更新を送信します。
だから今、私は都市の場所を収集し、それらをd3オブジェクト/都市と一致させる方法を見つけなければなりません.だから私はこのようにループしました:
.attr("transform", function(d,i) {return "translate("+json.locations[i].x+","+json.locations[i].y+")" ;})
しかし、これは何も一致せずに配列を通過するだけです。したがって、基本的にループを通過して、IDが相関しているかどうかを確認し、その場所を関連するd3オブジェクトに割り当てたいと思います。そのため、city id: 118 がドラッグ アンド ドロップされた場合、場所 city_id:188 は、問題である city_id:1 ではなく更新されます。
これは可能ですか?
前もって感謝します