2016-09-06 13 views
1

私はこれを動作させるのに苦労しています。静的変数はES 6形式のクラスでは宣言できないことを理解しています。どのようにしてクラス内の定数を宣言し、クラス内でそれにアクセスすることができますか?角度1.5コントローラのes6クラスで定数を定義する

ここに私のものがあります。私は$ onINitの間に定数のコンストラクタ値にアクセスしようとしています。私はthis.constructor.Constsが正しい値を持って参照してください。しかし、私がthis.getActionConsts.Aを使ってそれらにアクセスしようとすると、そこにはありません。

手がかりはありますか?

か、$onInit()getActionConts内部を呼び出していません

class ActionCtrl { 
 

 
    constructor($scope) { 
 
     this.$scope = $scope; 
 
    } 
 

 
    static get Consts() { 
 
     return { 
 
     A: '5010', 
 
     B: '5020', 
 
     C: '5030' 
 
     }; 
 
    } 
 

 
    getActionConsts() { 
 
     return this.constructor.Consts; 
 
    } 
 

 
    $onInit() { 
 
     this.Actions = [{ 
 
     'id': this.getActionConsts.A, 
 
     'title': '1' 
 
     }, { 
 
     'id': this.getActionConsts.B, 
 
     'title': '1' 
 
     }]; 
 
    } 
 
}

答えて

2

定数を定義するのより良い方法があります。 this.getActionConsts.Athis.getActionConsts().Aに変更すると動作します。また、this.constructorの代わりにクラス名を使用することもできます。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static

私が定数を使って作業するとき、私はちょうどconst宣言を使用し、クラスの外で私の定数を宣言します。 Angularには定数を定義するファンシーな方法がありますが、私は頭の上を思い出すことができません。

+0

ありがとう@ダニエル神戸。しかし、クラスの外側でconstを宣言すると、他のクラスの外で宣言された他の定数とinterefereすることは可能でしょうか? – looneytunes

+0

定数が一致すると、エラーになります。ファイルごとに複数のクラスを持つべきではありません。 –

+2

'ActionCtrl.consts = Object.seal({A: '5010'、B: '5020'、C: '5030'});'クラス宣言の後にgetterは 'get Consts(){return ActionCtrl .consts;} '。定数はパブリックですが、変更することはできず、グローバル定数になることはありません。 – RobG

関連する問題