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 で変数を宣言してから を使っていますが、パラメータがないので全体として 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 に答える