Stack: Typoskript 1.7 + Angular 1,49
Zusammenfassung:
ich eine Richtlinie haben. Ich möchte $inject
winkel $timeout
Service. Es funktioniert gut in der Controller-Funktion der Direktive, aber nicht in der Link-Funktion. Was vermisse ich?
Fragen:
- Was habe ich falsch gemacht?
- Gibt es einen besseren Weg zu
$inject
die$timeout
Abhängigkeit? - Warum funktioniert der Dienst
$timeout
im Controller der Direktive, aber nicht im Link?
MyDirective.ts:
module app.directives {
export class MyDirective {
priority = 0;
restrict = 'E';
templateUrl = 'template.html';
scope = {
'items': '='
};
controller = MyController;
link = MyLink;
static $inject = ['$timeout'];
constructor(private $timeout:ng.ITimeoutService) {
}
}
function MyController($scope:ng.IScope, $timeout:ng.ITimeoutService) {
console.log("controller", $timeout); // function timeout(fn,delay,invokeApply){ the guts here }
$timeout(function() {
console.log("This works fine");
},3000);
}
function MyLink(scope:ng.IScope, element:ng.IAugmentedJQuery, attr:ng.IAttributes, $timeout:ng.ITimeoutService) {
console.log("link to", $timeout); // MyController {}
$timeout(function() {
console.log("This throws the error, TypeError: $timeout is not a function");
},3000);
}
}
Connecting es in directives.ts:
module app.directives {
angular.module('app').directive('MyDirective',['$timeout',($timeout:ng.ITimeoutService) => new MyDirective($timeout) ]);
}
app.ts
module app {
angular.module('app', []);
}
Was nicht funktioniert hat:
- Mit
this.$timeout
in MyLink mit oder ohne$timeout
in den Parametern einschließlich. - Ich habe mehrere Artikel und Beispiele gefunden, die ich versucht habe, um sicherzustellen, dass ich die Logik in meiner App befolge, sie aber scheinbar nicht bekomme.
Schlussnoten
- Typoskript-Angular ist noch neu und es gibt so viele Best Practices, die weit davon entfernt sind definiert. Ein Teil des Projekts meines Teams ist es, einige davon zu finden.
- Wir haben an dieser allgemeinen Struktur für eine Weile gearbeitet, also, es sei denn, es gibt einen zwingenden Grund, bitte unterlasse Vorschläge, dass ich die Struktur von allem zu sehr ändere.
Gut eins, besser als meins. – kutomer
Danke, das funktioniert! – MaxRocket