Определение констант в классе es6 для контроллера angular 1.5

Я изо всех сил пытаюсь заставить это работать. Я понимаю, что статические переменные нельзя объявлять в классе в формате ES 6. Как можно объявить константы внутри класса, а также получить к ним доступ внутри самого класса

вот что у меня есть. Я пытаюсь получить доступ к значению конструктора для констант, пока $onINit. Я вижу, что this.constructor.Consts имеет правильные значения. Однако, когда я пытаюсь получить к ним доступ с помощью this.getActionConsts.A , его там нет.

Любые подсказки?

Или есть лучший метод определения констант

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'
      }];
    }
}


person looneytunes    schedule 06.09.2016    source источник


Ответы (1)


Вы не звоните getActionConts внутри $onInit(). Это работает, когда вы меняете this.getActionConsts.A на this.getActionConsts().A. Также вы можете использовать имя класса вместо this.constructor, это немного чище. Я использовал эти документы, если вы хотите узнать больше https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static

Когда я работаю с константами, я просто использую объявление const и объявляю свои константы вне класса. В Angular также есть несколько причудливых способов определения констант, которые я не могу припомнить.

person Daniel Kobe    schedule 06.09.2016
comment
Спасибо @Даниэль Кобе. Однако, когда мы объявляем константы вне класса, возможно ли, что константы могут мешать другим константам, объявленным вне других классов? - person looneytunes; 06.09.2016
comment
Если константы мешают, это приведет к ошибке. В любом случае у вас не должно быть более одного класса в файле. - person Daniel Kobe; 06.09.2016
comment
Рассмотрим ActionCtrl.consts = Object.seal({A: '5010',B: '5020',C: '5030'}); после объявления класса, тогда получателем является get Consts() { return ActionCtrl.consts;}. Константы общедоступны, но не могут быть изменены и не могут стать глобальными константами. - person RobG; 06.09.2016