2016-07-21 61 views
1

我認爲這個問題的答案是「不」,但我反問,因爲我似乎無法找到明確的答案。AngularJS bootstrap或負載控制器上飛

angularjs可以即時載入控制器嗎?

爲了進一步解釋,我已經被自舉的默認方式的角度的應用程序,通過NG-app.Example,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> 
... 

該應用模塊內部,我有一個路徑設定,像這樣:

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

我很好奇 - 有沒有一種方法來加載HomeController.js文件,當用戶去那條路線?因此,js文件並未在上面的index.html中設置,而是在home/home.html中設置:

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

是這樣的可能嗎?

回答

2

是的,AngularJS能夠動態加載路由控制器和依賴項,如工廠。它需要使用RequireJS。 RequireJS將會是你的入口點,它會加載Angular。

角路由的resolve屬性會啓動對通過RequireJS解析文件的某些代碼的調用。由於resolve屬性使用promise,所以只有在加載文件之後纔會加載路徑。

另外,您可以使用類似GulpJS,咕嘟咕嘟-角模板緩存,CONCAT優化的應用程序,醜化等下面是一個例子:

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

+0

這是完美的 - 謝謝! –