2013-01-03 51 views
1

我試圖創建一個D3插件阿拉這個計算器的問題:檢索數據綁定D3

How to make a d3 plugin?

但他表示例子中

(function() { 
    d3.selection.prototype.editable = d3.selection.enter.prototype.editable = function() { 
     return this.attr('data-editable', true); 
     }; 
})(); 

我不明白他怎麼能實際上檢索與選擇相關的數據。這個東西甚至可以用d3.selection的這個擴展名來檢索嗎?我通過d3源代碼稍微挖掘了一下,但發現自己比以前更加困惑。

寫過d3擴展名/插件的人能指引我正確嗎?

回答

1

在javascript中,this指的對象是(通常是,並且在上面的示例代碼中)由調用函數的對象確定,其中this出現。

因此,行return this.attr('data-editable', true);將返回完全相同的d3選擇對象,該對象調用editable

因此,您將恢復正常的舊d3選擇對象,就像您在普通的d3方法鏈接模式中一樣。一旦你有了,得到的數據是just a matter of looking up the API for the d3 selection object.

如果你對如何獲取數據回來有興趣,看看數據方法。從上面的鏈接,當調用該方法不使用任何參數:

如果未指定的值,則此方法返回在選擇所述第一組數據 陣列。返回的數組 的長度將與第一個組的長度匹配,並且返回數組中每個數據索引 將匹配 選擇中的對應索引。如果選擇中的某些元素爲空,或者如果它們沒有關聯的數據,則 數組中的對應元素將是未定義的。