Я пытаюсь создать директиву AngularJS с помощью TypeScript. Моя директива требует "ngModel", и я также использую настраиваемую службу, введенную в мою директиву. Моя основная проблема заключается в том, что моя служба не может использоваться внутри моей функции ссылок.
Вот пример того, чего я пытаюсь достичь:
module app.directives {
export var directiveName: string = "theDirective";
angular.module("myApp").directive(directiveName,
(myFactory: app.services.MyFactory) =>
{
return new MyDirective(myFactory);
});
export interface IMyDirectiveScope extends ng.IScope {
ngModel: ng.INgModelController;
}
export class MyDirective implements ng.IDirective {
restrict = "A";
require = "ngModel";
scope = {
ngModel:'='
}
constructor(private myFactory: app.services.MyFactory) {
}
link(scope: IMyDirectiveScope , elem: JQuery, attributes: ng.IAttributes, ngModel: ng.INgModelController) {
//this is window here
elem.bind('blur', (evt: JQueryEventObject) => {
//keyword this is also window here, so yeah bummer indeed
validate();
});
function validate() {
//I need to use my factory here, but I can seem to get it.
//this is always window and I'm kinda stuck here
}
}
}
}
Я не могу найти более продвинутые материалы по этой теме. Все примеры, которые я не обнаружил, похоже, не используют службы или сложную функцию связи. Пожалуйста, ответьте на этот вопрос каким-то примером. Это обман, который вы думаете.
Обновление: Тот факт, что 'this' внутри моей функции ссылки является окном, а не "MyDirective", не имеет для меня большого смысла. Любые идеи, почему это было бы?