2016-03-16 4 views
0

Я осуществил следующий AngularJS директиву:Получить Угловое имя директивы от машинописи

export module Directives { 

    export class PasswordsMatch implements ng.IDirective { 

     public static Factory(name: string) : ng.IDirectiveFactory { 
      return() => new PasswordsMatch(); 
     } 

     require = 'ngModel';    
     link = (scope: ng.IScope, element: ng.IAugmentedJQuery, attrs: Attributes): void => { 
      // how to get directive name here? 
     }; 
    } 
} 

, который зарегистрирован в другом файле сценарий, как:

class Application { 
    private app: ng.IModule; 

    constructor() {  

     // Controllers 

     // Directives   
     this.app.directive('ngPasswordsMatch', Directives.PasswordsMatch.Factory()); 
    }   
} 

Можно ли получить имя директивы внутри функции связи без прохождения название директивы для функции Factory (я не хочу дублировать имя директивы)?

ответ

0

Вы можете иметь директивное имя снаружи в переменной, чтобы оно было доступно в любом месте внутри.

let directiveName = 'ngPasswordsMatch'; //declared directive name as string 
export module Directives { 

    export class PasswordsMatch implements ng.IDirective { 

    public static Factory(name: string): ng.IDirectiveFactory { 
     return() => new PasswordsMatch(); 
    } 

    require: 'ngModel'; 
    link = (scope: ng.IScope, element: ng.IAugmentedJQuery, attrs: Attributes): void => { 
     console.log(directiveName); //directive name accessible here 
    }; 
    } 
} 

this.app.directive(directiveName, Directives.PasswordsMatch.Factory()); 

При наличии которой можно сказать, что переменная directiveName получить имя директивы.

+0

Да, вы правы, я мог бы. Но в этом случае я получаю некоторую общую/глобальную переменную, которую я бы хотел избежать. Я уточню свой вопрос. Тем не менее, спасибо за ответ! – dmitryanufriev

Смежные вопросы