2016-07-21 8 views
1

Ich denke, die Antwort auf diese Frage ist "Nein", aber ich frage es sowieso, wie ich nicht scheinen kann, eine endgültige Antwort zu finden.AngularJS Bootstrap oder Load Controller im laufenden Betrieb

Kann angularjs die Controller im laufenden Betrieb laden?

weiter zu erklären, ich habe einen Winkel App, die das Standard Bootstrap ist, über ng-app.Example, die Datei index.html:

<!doctype html> 
<html> 
<head> 
    <title>myapp</title> 
</head> 
<body ng-app="app"> 
... 
<app-body></app-body> 
<script src="lib/angular/angular.min.js"></script> 
<script src="app/app.js"></script> 
... 

Im Innern der App-Modul habe ich eine Route Setup , so etwas wie dieses:

$routeProvider 
      .when('/Home', { 
       templateUrl: 'home/home.html', 
       controller: 'HomeController' 
      }) 
      .when('/Behaviors', { 
       templateUrl: 'contact/contact.html', 
       controller: 'ContactController' 
      }); 
     // etc. 

ich war neugierig - gibt es eine Möglichkeit, die HomeController.js-Datei zu laden, wenn der Benutzer auf dieser Strecke geht? So js diese Datei nicht in der index.html oben gesetzt ist, aber in der Wohnung/home.html:

<script src="home/HomeController.js"></script> 

Ist so etwas möglich?

Antwort

2

Ja, AngularJS kann Routencontroller und Abhängigkeiten wie Fabriken dynamisch laden. Es würde die Verwendung von RequireJS erfordern. RequireJS wäre Ihr Einstiegspunkt, der Angular lädt.

Die Auflösungseigenschaft der Winkelroute würde einen Aufruf von Code auslösen, der eine Datei über RequireJS aufgelöst hat. Da die resolve-Eigenschaft Versprechungen verwendet, wird die Route erst geladen, wenn die Datei geladen ist.

Alternativ Sie eine App mit so etwas wie GulpJS, Gulp-Winkel-Template-Cache optimieren könnte, concat, verunstalten, usw. Hier ist ein Beispiel:

http://weblogs.asp.net/dwahlin/dynamically-loading-controllers-and-views-with-angularjs-and-requirejs

+0

Das ist perfekt - vielen Dank! –