Ich habe ein paar Beispiele für die Verwendung von TypeScript mit einem Winkel-Controller und Anfügen von Methoden über den Geltungsbereich like this one gesehen.Anfügen Methode an Controller mit TypeScript und ControllerAs
Allerdings ist es jetzt besser, controllerAs
zu verwenden.
folgendes Typoskript Given (vorausgesetzt, es als Controller an anderer Stelle usw. korrekt registriert wurde):
class exampleCtrl {
public publicArray = [1,2,3];
public somePublicMethod() {
window.console.log('ran function')
}
}
Dies erzeugt:
var exampleCtrl = (function() {
function exampleCtrl() {
this.publicArray = [1, 2, 3];
}
exampleCtrl.prototype.somePublicMethod = function() {
window.console.log('ran function');
};
return exampleCtrl;
}());
Beachten Sie, wie somePublicMethod
zum Prototyp hinzugefügt wurde und publicArray
wird direkt zu this
hinzugefügt.
Soweit ich sagen kann, sind Methoden, die dem Prototyp hinzugefügt wurden, nicht über das DOM mit ControllerAs verfügbar.
beispiels
<div ng-controller="exampleCtrl as vm">
{{vm}} <!-- No function is output just {"publicArray":[1,2,3]} -->
<div ng-click="vm.somePublicMethod">Click me</div> <!-- click event doesn't work -->
</div>
Wie kann ich jetzt somePublicMethod
über das DOM? Oder, wie kann ich eine öffentliche Funktion in einer TypeScript (ES6) -Klasse öffentlich zugänglich machen, wenn Sie ControllerAs Syntax verwenden?
plunker zu zeigen, was ich sehe.
Andere Punkte:
Ich weiß public
, private
und protected
nicht wirklich die Art und Weise der Code transpiled ist, warnt Sie nur, wenn Sie es falsch verwenden.
Oh whoops, einfacher Fehler bei der Herstellung eines isolierten Beispiels. Ich dachte, das wäre der Fall. Gut zu wissen, dass es möglich ist. Ich vermute, dass es anderswo in meiner App ein Problem gibt. Vielen Dank. –