2011-11-13 10 views
0

私はMootoolsフレームワークから始めています。私はコードを再利用可能にしたいので、私はクラスでそれをやろうとしています。mootoolsのカスタムメソッド内のOptionsコンストラクタで定義されたプロパティの使用

以下に示すコードでは、SVG用のRaphaelフレームワークを使用してマップを描画することを意図しています。コードは正常に動作していますが、Optionsオブジェクト内にあるプロパティに問題があります。

var Map = new Class({ 

Implements : [ Options ], 

pathsArr: {}, 

Options: { 
    canvas: { 
     container: 'map', 
     cheight: 500, 
     cwidth: 900, 
    }, 
    attributes: { 
     fill: '#006699', 
     stroke: '#3899E6', 
     'stroke-width': 1, 
     'stroke-linejoin': 'round' 
    } 
}, 

initialize: function (pathsArr, options){ 
    this.setOptions(Options); 
    this.pathsArr = paths; 
    console.log(this.pathsArr); 
}, 

setCanvas: function(){ 
    console.log(this.Options.canvas); 
    R = Raphael(this.Options.canvas.container, this.Options.canvas.cwidth, this.Options.canvas.cheight); 
    return R; 
}, 

drawPaths: function(){ 
    console.log(this.Options.attributes); 
    for (var country in this.pathsArr){ 
     var shape = R.path(this.pathsArr[country].path); 
     var attri = this.Options.attributes; 
     console.log(attri); 

    } 
} 

});

私はconsole.logを使っていますが、ここで何が起こっているのかを理解しています。私はラインの属性を確認したときに、私はpathsArrウィッヒは外でチェックインしたときと

console.log(this.Options.attributes); 

は私が

enter image description here

は私が起こった何のようなものが必要だと思うGoogle Chromeのコンソールでこれを取得しますOptionsオブジェクトです。

enter image description here

、どこで、私は、プロパティ何も起こらない属性が必要です。これらの2つの行のように。

私がこれを行うと、正しい結果が得られません。

console.log(this.Options.attributes.fill); 

まあ、これはこれで、私はこれにこだわっていると私はなぜこれが起こっている誰かが私に説明することができます願っています。ありがとうございました!!

答えて

3

Javascriptでは大文字と小文字が区別されます。 Optionsの代わりにsetOptions(options)this.optionsを使用してください。大文字のOは、Implements: [Options]命令のようにOptionsミューテータが参照されている場合にのみ存在します。

現在、を探しているため、OptionsのメンバーをsetOptionsコールで設定することはできません。

あなたはデフォルトのオプションであるthis.Optionsしか使用していませんが、これは決して更新されません。 this.optionsは、this.setOptions(Options)と書くときに指示するとおり、Optionsミューテータに設定されています。

EDIT:

はまた、次のコードで:

initialize: function (pathsArr, options){ 
    this.setOptions(Options); 
    this.pathsArr = paths; // <----- `paths` is undefined 
+0

うわー、それは完全な答えでした!文法訂正+問題への答え。どうもありがとうございます!私は英語とJavaScriptのプログラミングを同時に学んでいます! – limoragni

関連する問題