2015-05-09 101 views
0

我是Angularjs的新手,目前正在練習它。我有一個這樣的簡單例子。Angular.module不能正常工作

我查看Index.cshtml

<div ng-app="MyApp">  
<div class="show-scope-demo"> 
     <div ng-controller="MainController"> 
      <p>Good {{timeOfDay}}, {{name}}!</p> 
      <div ng-controller="subController1"> 
       <p>Good {{timeOfDay}}, {{name}}!</p> 
       <div ng-controller="subController2"> 
        <p>Good {{timeOfDay}}, {{name}}!</p> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

和我的控制器是MyJsScript.js

(function (angular) { 

angular.module('MyApp', []).controller('MainController', ['$scope', function ($scope) { 
    $scope.timeOfDay = 'morning'; 
    $scope.name = 'sapan'; 
}]); 
angular.module('MyApp', []).controller('subController1', ['$scope', function ($scope) { 
    $scope.name = 'sapan'; 
}]); 
angular.module('MyApp', []).controller('subController2', ['$scope', function ($scope) { 
    $scope.timeOfDay = 'Evening'; 
    $scope.name = 'Tapan'; 
}]); 
})(window.angular); 

在這種情況下,我得到錯誤

「[NG:AREQ]參數'MainController'不是一個函數,沒有定義「

但是,如果我改變我的控制器這樣

(function (angular) { 
var myApp = angular.module('MyApp', []); 
myApp.controller('MainController', ['$scope', function ($scope) { 
    $scope.timeOfDay = 'morning'; 
    $scope.name = 'sapan'; 
}]); 
myApp.controller('subController1', ['$scope', function ($scope) { 
    $scope.name = 'sapan'; 
}]); 
myApp.controller('subController2', ['$scope', function ($scope) { 
    $scope.timeOfDay = 'Evening'; 
    $scope.name = 'Tapan'; 
}]); 
})(window.angular); 

這是完全工作沒有任何錯誤。

任何人都可以告訴我這兩個語法的確切區別是什麼。

+0

[AngularJS多次定義angular.module()的可能重複](http://stackoverflow.com/questions/14371410/angularjs-defining-angular-module-multiple-times) –

回答

2

每次調用

angular.module('MyApp', []) 

定義一個模塊命名爲「MyApp的」(從而有效地覆蓋以前使用相同的名稱定義的模塊)。

要到名爲「MyApp的」預先定義的模塊的引用,正確的語法是

angular.module('MyApp') 

而不依賴關係的數組。