0
訪問變量/參數傳遞給回調這可能是一個JS的問題,或許比D3的問題更如何獲得與D3
我有一個單頁上幾個D3可視化,都正在從打造相同的代碼。爲了擁有某種名稱空間,我創建了一個類(在JS中是一個函數),我實例化了這個類。像下面這樣:
function AlmViz(params) {
...
this.svg = this.chartDiv.append("svg")
.attr("width", this.width + this.margin.left + this.margin.right)
.attr("height", this.height + this.margin.top + this.margin.bottom)
.append("g")
.attr("transform", "translate(" + this.margin.left + "," + this.margin.top + ")");
...
}
function loadData(viz) {
...
viz.svg.selectAll(".bar")
.data(level_data)
.enter().append("rect")
...
...
}
// I loop here and call this several times
// with different paramters, so I get a bunch of
// different graphs
var viz = new AlmViz(params);
loadData(viz);
chartDiv.svg.append("a")
.attr("href", "#")
.text("to change click here")
.on("click", change);
我現在想添加一些轉變,這要求使用。對的(「點擊」,變更)。但是,在所有D3範例中,更改函數都依賴於訪問當前範圍內的變量。如何訪問與特定實例一起使用的圖表對應的AlmViz實例?
注意:這已經發布在d3 Google小組上,但它似乎沒有得到太多關注,所以我原本以爲我會回到STO。原帖是在這裏: https://groups.google.com/forum/?fromgroups=#!topic/d3-js/1o4mYnMJZTA
您可以將所有的情況下,保存在一個數組/對象。 – 2013-04-20 21:08:00
是的,我想到了這一點,但我仍然不知道如何通過onChange回調 – pocketfullofcheese 2013-04-20 21:10:00
傳遞實例(或數組鍵),我唯一的想法是使用鏈接中的屬性(例如,一個id在)並將其用作數組鍵。它似乎不是正確的方法,但也許它的權利? – pocketfullofcheese 2013-04-20 21:11:16