望着AngularJS's docs - 我看到了常規的(我知道)模式來聲明控制器:(支持微小)在angularjs中組織控制器和模塊?
var phonecatApp = angular.module('phonecatApp', []);
phonecatApp.controller('PhoneListCtrl', ['$scope', '$http',
function ($scope, $http) {
...
}]);
但later on - they changed it to:
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
凡app.js:
var phonecatApp = angular.module('phonecatApp', [
'ngRoute',
'phonecatControllers'
]);
個
而且controllers.js:
var phonecatControllers = angular.module('phonecatControllers', []);
phonecatControllers.controller('PhoneListCtrl', ['$scope', '$http',
function($scope, $http) {
...
}]);
問題
1)什麼在第一段代碼錯模塊化?我沒看到問題。我有一個應用程序,我附上控制器,就是這樣。我從第二個代碼中獲得什麼好處? 真實場景將不勝感激。
2)在第二個代碼 - app.js
怎麼處理phonecatControllers
其中phonecatControllers
不在頁面上。 (這是js之後加載)。
我不認爲有什麼不對兩個例子。但無論哪種情況,我都不明白爲什麼你想要一個全局變量來跟蹤應用程序(或第二個示例中的控制器)。第二個例子允許您將控制器組織到自己的模塊中,將服務組織到自己的模塊中,然後將它們注入到主模塊中。它使您的控制器和服務,無論我想更便攜。 – Ian 2014-09-22 20:48:50
至於現實生活場景,我喜歡將每個**控制器的代碼放入單獨的文件中(並且稍後將其捆綁/縮小)。我不想要一個全局變量(或變量)只是爲了聲明組件而浮動。因此,我聲明組件組 - 'angular.module( 「testApp.controllers」,[]);',聲明主模塊 - 'angular.module( 「testApp」,[ 「testApp.controllers」]);',然後向每個組添加組件 - 'angular.module(「testApp.controllers」).controller(「TestCtrl」,function(){});'(每個都有自己的文件)。我確信有更詳細的原因,但我爲組織做到這一點 – Ian 2014-09-22 20:52:15