9
我正在使用D3函數each
,它接受回調函數並調用它作爲參數傳遞this
,但我需要同時訪問this
和_this
。這是CoffeeScript的代碼:如何使用`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
,並使用細箭頭代替胖箭頭(因爲我無法訪問s @x),除非我重寫了D3函數,這看起來過度。
你救了我。謝謝! – nachocab
很好的答案畝。 –