Sto provando a creare una direttiva AngularJS utilizzando TypeScript. La mia direttiva richiede 'ngModel' e sto anche usando un servizio personalizzato inserito nella mia direttiva. Il mio problema principale è che il mio servizio non può essere utilizzato all'interno della mia funzione di collegamento.AngularJS Funzione di collegamento direttiva TypeScript
Ecco un esempio di quello che sto cercando di realizzare:
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
}
}
}
}
io non riesco a trovare un po 'di cose più avanzate su questo argomento. Tutti gli esempi che non trovo non sembrano utilizzare servizi o una complessa funzione di collegamento. Si prega di rispondere a questa domanda con qualche sorta di esempio. È un inganno che tu pensi.
Aggiornamento: Il fatto che "questo" all'interno della mia funzione di collegamento sia finestra e non "MyDirective" non ha molto senso per me. Qualche idea sul perché sarebbe?
Th questo funziona, potresti darmi un esempio di come ti avvicineresti a questo tipo di situazioni senza una lezione? – user1613512
@ user1613512 Ho modificato la mia risposta per includere un esempio senza una classe – rob
Write unboundLink (...) {var self = this; ...} allora puoi usare la variabile autonoma all'interno di validate() invece di questa. –