2014-10-07 126 views
0

我使用的代碼從本文建立一個初始響應線圖:D3響應多行

https://blog.safaribooksonline.com/2014/02/17/building-responsible-visualizations-d3-js/

我更新它,以允許多行圖。我用一個角度指令來驅動數據行,繪製線條的代碼更像這樣(這是coffeescript,但您明白了,seriesConfig是一個具有關於數據信息的自定義JS對象):

for series in seriesConfig 

    newLine = d3.svg.line() 
     .x((d) -> return xScale(getXValue(d))) 
     .y((d) -> return yScale(getYValue(d, series))) 

我正在努力的部分是在瀏覽器重新調整大小時再次更新行。在他的文章中,他使用此代碼將行存儲爲變量:

graph.selectAll('.line').attr("d", line) 

但是,在這裏我有多行。每條線重繪自己的適當方式是什麼?

提前致謝!

回答

0

我想通了。我爲每一行分配了一個唯一的ID並將其存儲在一個與ID和行相關的散列中,然後在onResize中我選擇了該行的ID並用散列中的值進行更新。

我遇到的另一個問題是他的代碼只將onResize掛鉤到一行。我更新

d3.select(window).on "resize" 

d3.select(window).on "resize.#{lineId}" 

,以便有被分配到調整大小事件,我想你可以命名空間範圍(通過後綴)多個監聽事件的唯一實例,因爲我已經做了這裏。