2016-01-04 139 views
3

如何訪問在另一個.js文件中定義的角度模塊?在另一個.js文件中定義的角度模塊

背景:

我有點開始角JS編程(一ASPNET MVC應用程序內)入門指南。

爲了清楚起見,我在一個名爲AspnetMvcAngular.js的文件中創建了一個角度模塊。

var AspnetMvcAngularJs = angular.module('AspnetMvcAngularJs', []);

我然後,定義在一個不同的文件中的角度控制器的代碼(腳本/控制器/ HomeController.js)

AspnetMvcAngularJs.controller('HomeController', ['$scope', function ($scope) { $scope.greeting = 'Hola!'; }]);

當應用程序運行時,它似乎並不識別AspnetMvcAngularJs

任何指針我在做什麼錯在這裏?

編輯: 儘管下面的答案非常好,但我注意到了一些非常重要的東西。

在這些文件的訪問順序,重要的

例如我已經使用在ASP.NET-MVC bundles和順序應該是象下面這樣:

bundles.Add(new ScriptBundle("~/bundles/definitions"). Include("~/Scripts/AspnetMvcAngularJs.js"). IncludeDirectory("~/Scripts/Controllers", "*.js"));

這定義了*.js文件包含angular module第一,然後還可以包括其他*.js控制器中的文件。

我做的錯誤是首先調用控制器文件。所以運行時會拋出一個錯誤,指出沒有這樣的模塊可用。

回答

3

您可以使用相同的angular.module語法訪問定義的模塊,但不指定模塊的相關性。在這種情況下,您將返回已定義的模塊,然後您可以使用它來創建控制器或其他角度組件。

angular.module('AspnetMvcAngularJs').controller('HomeController',['$scope', function ($scope) { 
    $scope.greeting = 'Hola!'; 
}]);) 
+0

我們不能把它分成兩個文件並放? –

+0

你可以分成兩個文件。 – Iamisti

+3

this:'angular.module('AspnetMvcAngularJs',[])'將創建一個模塊,而這個:'angular.module('AspnetMvcAngularJs')'將返回已定義的模塊 – Iamisti

2

下面是從original angular doc on module報價:

創作與檢索

要注意的是使用angular.module('myModule',[])將創建模塊myModule並覆蓋所有現有的模塊 命名myModule

使用angular.module('myModule')檢索現有的 模塊。

angular.module()回報,不管你用什麼創作語法或檢索語法,是angular.Module類型,它的方法controller(), service(), directive(), value(), factory()等所有模塊返回本身的模塊。因此,你可以把它們結合在一起像下面這樣:

angular.module('myModule', []). 
    value('a', 123). 
    controller('myController', function($scope) {...}) 
    factory('a', function() { return 123; }). 
    directive('directiveName', ...). 
    filter('filterName', ...); 

您還可以將模塊分配給一個變量,然後通過變量訪問模塊後:

var myModule = angular.module('myModule', []); 
// add some directives and services 
myModule.service('myService', ...); 
myModule.directive('myDirective', ...); 

模塊創建和模塊訪問代碼可以放在單獨的文件中。

+0

很好的答案。謝謝。:) –

相關問題