0

これはドキュメントで回答されている可能性がありますが、解決できませんでした。

基本的に、次のd3.jsような標準コードがあります。

group.selectAll('rect')
  .data(data)
.enter().append('svg:rect')
  .style('fill', colour)
  .on('mouseover', function(d, i) {
    chart.currentHoverItem = d
  })
  .on('mouseout', function(d, i) {
    chart.currentHoverItem = null
 })

コード全体のさまざまなメソッドに、これらの同一の行がいくつかあります。理想的には、私はこれをしたいと思います:

var addEvents() {
   this.on('mouseover', function(d, i) { ... })
   this.on('mouseout', function(d, i) { ... })
}

group.selectAll('rect')
  .data(data)
.enter().append('svg:rect')
  .apply(addEvents)

このコードを DRY するための最も良い解決策は何ですか?

4

1 に答える 1

2

あなたはselection.callを探しているかもしれません、これを試してください:

function addEvents(selection) {
    selection.on(...);
    selection.on(...);
}

group.selectAll('rect')
    .data(data)
.enter()
    .append('svg:rect')
    .call(addEvents);
于 2012-10-25T07:20:16.813 に答える