1

私はこのstackoverflowの質問でd3プラグインを作成しようとしています:

d3プラグインを作成する方法は?

しかし、彼の示された例の中で

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

彼が選択に関連するデータを実際に取得する方法がわかりません。これは、d3.selectionのこの拡張機能でも取得できるものですか?私はd3ソースを少しいじくり回しましたが、以前よりもはるかに混乱していることに気づきました。

d3拡張機能/プラグインを作成した人が私を正しい方向に導くことができますか?

4

1 に答える 1

1

javascriptでは、this参照するオブジェクトは(通常、上記のサンプルコードでは)、がthis表示される関数を呼び出すオブジェクトによって決定されます。

したがって、この行return this.attr('data-editable', true);は、を呼び出すまったく同じd3選択オブジェクトを返しますeditable

したがって、通常のd3メソッドチェーンパターンの場合と同じように、通常の古いd3選択オブジェクトを取得します。それができたら、データを取得するには、d3選択オブジェクトのAPIを検索するだけです。

データを取り戻す方法に特に関心がある場合は、データメソッドを確認してください。上記のリンクから、そのメソッドが引数なしで呼び出された場合:

値が指定されていない場合、このメソッドは選択範囲の最初のグループのデータの配列を返します。返される配列の長さは最初のグループの長さと一致し、返される配列の各データのインデックスは、選択範囲の対応するインデックスと一致します。選択範囲内の一部の要素がnullの場合、または関連するデータがない場合、配列内の対応する要素は未定義になります。

于 2013-01-03T10:15:16.263 に答える