Как использовать `this` и `_this` (жирная стрелка) с помощью coffeescript?

Я использую функцию D3 each, которая принимает функцию обратного вызова и вызывает ее, передавая thisв качестве аргумента, но мне нужно получить доступ к thisи _thisЭто код coffeescript:

@x = d3.scale.ordinal().domain(d3.range(@model.geneExpressions[0].length)).rangeBands([0, width])    

getRow = (row) =>
    cell = d3.select(this).selectAll(".cell")
        .data(row)
      .enter().append("rect")
        .attr("x", (d,i) => @x(i))    

rows = @heatmap.selectAll(".row")
    .data(@model.geneExpressions)
  .enter().append("g")
    .each(getRow)                    

и javascript, который он генерирует:

    var _this = this;    

this.x = d3.scale.ordinal().domain(d3.range(this.model.geneExpressions[0].length)).rangeBands([0, width]);    

getRow = function(row) {
        var cell;
        return cell = d3.select(_this).selectAll(".cell").data(row).enter().append("rect").attr("x", function(d, i) {
          return _this.x(i);
        })
      };    

rows = this.heatmap.selectAll(".row").data(this.model.geneExpressions).enter().append("g").attr("class", "row").each(getRow);

Как я могу получить coffeescript использовать thisвместо этого в этой строке и оставить все как есть?:

return cell = d3.select(this) ...

Проблема в том, что я не могу передать @x в качестве аргумента для eachи использовать тонкий стрелка вместо толстой стрелки (потому что тогда я не мог получить доступ к @x), если я не перепишу функцию D3, что кажется излишним

10
задан nachocab 7 June 2012 в 23:05
поделиться