2016-05-18 19 views
3

こんにちは私はSVGラインの次の例のオブジェクトを有するd3は一つの関数で複数の属性を設定

{ 
    _id: 5, 
    coordinates:{ 
     x1: 100, 
     y1: 100, 
     x2: 500, 
     y2: 500, 
} 

と仮定私は可変data内のこれらのオブジェクトの配列を有します。 私はすべての関連する回線属性を1つのattr()コール内に設定したいと思います。 オブジェクトを属性として渡すことができることが分かっていれば、d3はすべての属性を設定します。 は、私は、オブジェクトの配列を抱えているので、私は、オブジェクトを返す関数を作成した:

let objectsRender = svg.selectAll("line") 
         .data(data) 
         .enter() 
         .append("line") 
         .attr(function(d)  { return d.coordinates;}) 
         .attr("id", function(d){ return prefix +d._id;}); 

しかしのNO xまたはyの値が設定されていないとして、動作するようには思えません。 誰も私の問題の解決策を教えてもらえますか?

+0

それは属性X1、Y1、X2、Y2の –

+0

可能な重複だ[で複数の属性を設定する方法1つの値関数?](http://stackoverflow.com/questions/20822466/how-to-set-multiple-attributes-with-one-value-function) – brichins

答えて

3

私はあなたが1行では、あなたがしなければならないことはできません怖い:

.attr({ 
    x1: function (d) { return d.coordinates.x1; }, 
    x2: function (d) { return d.coordinates.x2; }, 
    y1: function (d) { return d.coordinates.y1; }, 
    y2: function (d) { return d.coordinates.y2; } 
    }); 
関連する問題