在我的代码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中声明了变量然后使用了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)
之前执行的操作。
答案 0 :(得分: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范围内(未将其返回给调用函数)。