d3js调用一些对象的方法,而不是全局函数

时间:2013-12-06 06:29:18

标签: javascript d3.js call

以下代码失败    如果brush是一个全局函数,它只会创建画笔。

我该怎么称呼obj.editor?

oneObject.prototype.editor = function(){
  var brush = d3.svg.brush()
   .x(x)
   .extent([new Date(2013, 2, 2, 8), new Date(2013, 2, 2, 18)])
   .on("brushstart", brushed);
  return brush; 
}

var obj = new oneObject();  

var gBrush = svg.append("g")
.attr("class", "brush")
.call( function(){return obj.editor(); });

1 个答案:

答案 0 :(得分:0)

传递给call的函数应该以{{1​​}}为参数。在您的情况下,您完全无视传递的参数。另一方面,selection已经是这样的功能。

以下内容应该有效:

brush

这是以下任何一种简短形式:

var gBrush = svg.append("g")
  .attr("class", "brush")
  .call(obj.editor());

或者:

var gBrush = svg.append("g")
  .attr("class", "brush")
  .call( function(selection){ obj.editor()(selection); });