0

View我的代码中,我习惯了以下示例:

//for functions
functionName: function(…){…},
//for objects
objectName: function(…){…},
//for returning a function
nameToReturnFunction: function(…){ return {…} },

我将如何编写以下内容,而不是在 render() 或 init() 中?

    var pathFunction = d3.svg.line()
      .x(function (d) {return d.x;})
      .y(function (d) {return d.y;})
      .interpolate('basis'); // bundle | basis | linear | cardinal are also options

我已经在 render 或 init 中声明了变量然后 used this.pathFunction = pathFunction;,但是由于没有参数,我认为它应该View作为一个整体。

在我需要打电话的各个地方pathFunction,我想将其称为this.pathFunction。我尝试了以下方法:

pathFunction: function() {
    var pathFunction = d3.svg.line()
      .x(function (d) {return d.x;})
      .y(function (d) {return d.y;})
      .interpolate('basis');    
}

但这不起作用,this.pathFunction当我.attr('d', pathFunction)按照以前的结构进行操作时,它不会返回变量调用所做的事情。

4

1 回答 1

0

我对 d3 api 不是很熟悉,但以下应该可以工作:

pathFunction: function() {
    return d3.svg.line()
      .x(function (d) {return d.x;})
      .y(function (d) {return d.y;})
      .interpolate('basis');    
}

然后您应该可以像以前一样调用它:.attr('d', pathFunction).

您当前的代码片段正在正确执行 d3 函数,但仅在 pathFunction 的范围内(没有将其返回给调用函数)。

于 2013-09-11T15:16:59.407 回答