Join the Stack Overflow Community
Stack Overflow is a community of 6.4 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

I have a directive for a colorpicker widget. Currently I have defined an array of colors in the scope directly as scope.colorList as shown in the code below.

As per the review comments that I got,I want to declare a static array of colors rather than having to write in scope directly every time the widget is used.

export class MyDirective implements ng.IDirective {
    public link: (scope: IMyScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModelCtnr: ng.INgModelController) => void;


    constructor() {
        var that = this;
        this.link = (scope: IMyScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModelCtnr: ng.INgModelController) => {

            scope.colorList = ["#008b8b;", "#00bfff;", "#1766b5;", "#1768b5;", "#17b566;", "#1a7e55;", "#20b2aa;", "#25a071;", "#3b1153;", "#4f59ea;", "#4fc7ea;", "#522424;", "#633939;", "#6617b5;", "#68c4af;", "#7e1a43;", "#80e56f;", "#8b9dc3;", "#a560d6;", "#b56617;", "#b8860b;", "#ba55d3;", "#c0afaf;", "#c0c0c0;", "#c71585;", "#cd5c5c;", "#cec2e5;", "#dc143c", "#dcedc1;", "#f08080;", "#ff4040;", "#ffa500;", "#faebd7;"];

            ....
            });
        };
    }

}
share|improve this question
up vote 0 down vote accepted

You can declare a static variable in your class.

export class MyDirective implements ng.IDirective {
    private static COLOR_LIST = ["#008b8b;", "#00bfff;", "#1766b5;", "#1768b5;", "#17b566;", "#1a7e55;", "#20b2aa;", "#25a071;", "#3b1153;", "#4f59ea;", "#4fc7ea;", "#522424;", "#633939;", "#6617b5;", "#68c4af;", "#7e1a43;", "#80e56f;", "#8b9dc3;", "#a560d6;", "#b56617;", "#b8860b;", "#ba55d3;", "#c0afaf;", "#c0c0c0;", "#c71585;", "#cd5c5c;", "#cec2e5;", "#dc143c", "#dcedc1;", "#f08080;", "#ff4040;", "#ffa500;", "#faebd7;"];
    public link: (scope: IMyScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModelCtnr: ng.INgModelController) => void;


    constructor() {
        var that = this;
        this.link = (scope: IMyScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ngModelCtnr: ng.INgModelController) => {

            scope.colorList = MyDirective.COLOR_LIST;

            ....
            });
        };
    }

}

However, I would advise you use the constant recipe instead.

share|improve this answer
    
Thank you. I used the constant recipe. – NEHAVERMA8 Feb 8 at 11:19

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.