角度迫使我在窗口上做变量

时间:2013-07-01 11:07:58

标签: javascript angularjs

我想关注angularjs推荐(http://docs.angularjs.org/guide/module):

  

虽然上面的示例很简单,但它不会扩展到很大   应用。相反,我们建议您将应用程序分解为   像这样的多个模块:

     

服务模块,用于服务声明指令模块,用于   指令声明一个过滤器模块,用于过滤器声明和一个   应用级模块依赖于上述模块,以及哪些   有初始化代码。

所以我创建了仅包含:

的services.js文件
window.myservices = angular.module('services', []);

然后我添加了一些服务,其中每个服务文件都以:

开头
window.myservices.factory('service1', function() {
    ....
});

我为filters.js和directives.js做了同样的事。

在我的app.js文件中,我做了:

window.App = angular.module('app', ['services', 'filters', 'directives']).
    // run \ config \ whatever

如果不在窗口上创建变量,我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

根本不需要全局变量:

// Define your services
angular.module('services', [])
  .factory('service1', function(){})
  .factory('service2', function(){});

// Define you main app module and specify the dependencies
angular.module('MyApp', ['services']);

答案 1 :(得分:0)

正如Stewie所说,你可以使用angular.modue('service',[]);

但是你只需要在第一个加载的文件中执行此操作,如下所示:

file1.js

var mod = angular.module('service',['dependancy']);

file2.js

var mod = angular.module('service');

的index.html

<script src="/scripts/file1.js"></script>
<script src="/scripts/file2.js"></script>

另一个选择是使用命名空间......

file1.js

var mod = angular.module('service.part1',[]);

file2.js

var mod = angular.module('service.part2',[]);

main.js

var mod = angular.moduel('service', ['service.part1','service.part2']);

EDIT(plunker):

http://plnkr.co/edit/i75A5CQeSptQjaxvR8qi?p=preview