角度模块命名空间用法

时间:2016-06-01 08:40:30

标签: javascript angularjs

我会更清楚,更深刻地理解角度模块的使用。 我有一个指令文件夹,其中每个指令都在单独的文件中。

我的第一个文件(第一个指令)有一个

的声明
angular.module("Name",["Dep1","Dep2"]).directive(....)

我的第二个文件声明

angular.module("Name").directive(.....)

我的第三个文件声明

angular.module("Name").directive(.....)

等等。

我的文件引用是这样的。

<script src="FirstFile"></script>
<script src="SecondFile"></script>
<script src="ThirdFile"></script>

我有几个问题:

1.如何在每个文件中删除angular.module(“Name”)声明?

  1. 为什么我的第一个声明必须是angular.module(“Name”,[“Dep1”,“Dep2”])以及依赖列表,我可以在行中调用此文件吗?

4 个答案:

答案 0 :(得分:2)

典型的最佳做法是创建module.jsapp.js文件,您可以在其中声明模块以及任何config()run()操作

module.js

angular
  .module('MyModule', ['dependency1', 'dependecy2'])

directive1.js

angular
  .module('MyModule')
  .directive('Directive1' directive1Fn)

directive2.js

angular
  .module('MyModule')
  .directive('Directive2' directive2Fn)

的index.html

<body>
  <div>...</div>
  <script src='angular.js'></script>
  <script src='module.js'></script>
  <script src='directive1.js'></script>
  <script src='directive2.js'></script>
</body>

如果您不希望在每个声明中调用angular.module(...),您可以将指令功能导入module.js并在那里声明它们(但这取决于您的工具链如何进行此操作)即

var d1 = require('./directive1.js')
var d2 = require('./directive2.js')

angular
  .module('MyModule', ['dependency1', 'dependecy2'])
  .directive('Directive1' d1)
  .directive('Directive2' d2)

答案 1 :(得分:1)

欢迎来到AngularJs!

回答你的问题:

  1. 您始终可以使用对象表示法:

    var app = angular.module("Name",["Dep1","Dep2"]);
    //now your app has an instance of the angular modudle which you just initialized
    app.directive("Directive1",function(...));
    app.directive("Directive2",function(...));
    
  2. 您的第一个声明始终必须包含依赖项数组。这是初始化模块的angular语法。如果你再次这样做,即初始化两个具有相同名称的角度模块,angular会给你一个错误。

  3. 详细了解https://docs.angularjs.org/guide/module

答案 2 :(得分:1)

您的第一个文件声明角度模块。将第二个参数传递给angular.module函数时,就会声明它。如果没有参数,您引用它。

声明模块:

angular.module('moduleName', ['dep1', 'dep2'])

参考模块:

angular.module('moduleName');

模块只能声明一次

声明后,您可以“附加”控制器和服务等。

关于你的第二个问题,通常可以按照你的方式(angular.module("name"))来参考模块。

但是,如果您真的不想,可以将其保存到变量中。

var myModule = angular.module('name');

myModule.directive('directiveName', ...);

答案 3 :(得分:1)

  

1.如何在每个文件中删除angular.module(&#34; Name&#34;)声明?

可能的方式

SomeNamespace.myApp,directive(..)

在其他档案中

var x = angular.module('ngAppName',[])

您还可以删除名称空间&amp;创建一个简单的

x

并在创建此指令或控制器或服务时使用angular.module("Name",[]);

基本上你需要创建一个全局变量。

  

为什么我的第一次宣言必须是   angular.module(&#34;名称&#34; [&#34; DEP1&#34;&#34; DEP2&#34;])

这是因为你在其他模块上有所依赖。

例如,它可以是ui-routerbootstrap-ui

如果您的应用程序不在其他模块上,它可以是一个安培数组

{{1}}