Momentan lerne ich AngularJS. Ich habe eine App "Hallo Welt" erstellt, die über die ng-view-Direktive angezeigt wird. So weit, ist es gut!Kann ein Controller in einer separaten Datei sein, wenn Sie ng-view verwenden?
Meine Dateien werden auf diese Weise bestellt:
- WebContent *(root)*
> - controllers *(folder)*
>> - controllers.js
> - views *(folder)*
>> - view1.html
>> - view2.html
> - index.html
Die Route Config wie folgt aussieht:
function routeConfig($routeProvider){
$routeProvider.when('/',
{
templateUrl: "views/view1.html",
controller: "View1Ctrl"
}
).when("/view/:id",
{
templateUrl: "views/view2.html",
controller: "View2Ctrl"
}
).otherwise(
{
redirectTo: "/"
});
};
app.controller("View1Ctrl", function($scope) {
$scope.message = "Hello World1";
}
[... etc. ...]
Wie ich bereits erwähnt habe vor: das völlig in Ordnung funktioniert. Die Dinge könnten jedoch komplexer werden. Die Controller könnten mehr Funktionen enthalten usw. Ist es möglich, diese Controller in externe Dateien zu legen? So wäre es etwa so aussehen:
- WebContent *(root)*
> - controllers *(folder)*
>> - controllers.js
>> - view1-controller.js
>> - view2-controller.js
> - views *(folder)*
>> - view1.html
>> - view2.html
> - index.html
Ich habe bereits versucht einfach, um diese Dateien in den Index zu importieren:
<script src="controllers/view1-controller.js"></script>
Aber das scheint nicht zu funktionieren. (Es hat mich mit einer Blank-Seite verlassen.) Hoffe, dass jemand mir helfen kann!
Es ist schwer, basierend nur auf dem Verzeichnispfad prognostizieren. Können Sie bitte ein Plunkr für das gleiche machen? –
Ich bin nicht vertraut mit Plunkr, aber ich denke, das ist eine Art, was Sie gefragt: https://plnrkr.co/edit/PsLwqDwgH4WghyVmQVF9?p=catalogue –
@RobertvanderSpek, ich sehe jetzt, wo dein Fehler liegt. In 'controllers/view1-controller.js' erstellen Sie ein neues Modul, anstatt es abzurufen. Anstelle von angular.module ("App", ["ngRoute"]). Controller (... ', sollten Sie' angular.module ("App") schreiben. Controller (... '. – Pjetr