Hier ist ein TypeScript-Beispiel für den Aufruf Zurück eine Methode auf dem Controller von einer eingebetteten Direktive. Beachten Sie, dass der Parametername der Anweisung für Ihren Callback einen & definiert, und wenn Sie diesen Callback aufrufen, sollten Sie keine Positionsparameter verwenden, sondern stattdessen ein Objekt mit Eigenschaften verwenden, die die Namen der Parameter im Ziel haben.
die Richtlinie registrieren, wenn Sie Ihre App-Modul zu erstellen:
module MyApp {
var app: angular.IModule = angular.module("MyApp");
MyApp.Directives.FileUploader.register(app);
}
Der Registrierungscode ist wie folgt:
Die Controller der Richtlinie würde wie folgt aussehen
module MyApp.Directives.FileUploader {
export class Controller {
public files: string[] = ["One", "Two", "Three"];
//The callback specified in the view that created this directive instance
public onFileItemClicked: (fileItem) => void;
// This is the controller method called from its HTML's ng-click
public fileItemClicked(fileItem) {
//IMPORTANT: Don't use comma separated parameters,
//instead use an object with property names to act as named parameters
this.onFileItemClicked({
fileItem: fileItem
});
}
}
}
Die Der HTML-Code der Anweisung würde in etwa so aussehen:
<ul>
<li ng-repeat="item in controller.files" ng-click="controller.fileItemClicked (item)">
{{ item }}
</li>
</ul>
Die Hauptansicht wird wie so
<body ng-app="MyApp" ng-controller="MainController as controller">
<file-uploader on-file-item-clicked="controller.fileItemClicked(fileItem)"/>
</body>
eine Instanz der Richtlinie haben nun alles, was Sie auf Ihrem MainController brauchen, ist eine Methode
public fileItemClicked(fileItem) {
alert("Clicked " + fileItem);
}
haben Sie Spielraum in der Richtlinie der Verwendung von isolierten übergeordnete Bereich der Controller –