Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度迫使我在窗口上创建变量_Javascript_Angularjs - Fatal编程技术网

Javascript 角度迫使我在窗口上创建变量

Javascript 角度迫使我在窗口上创建变量,javascript,angularjs,Javascript,Angularjs,我想遵循angularjs的建议(): 虽然上面的例子很简单,但它不会扩展到大型 应用。相反,我们建议您将应用程序中断为 多个模块如下所示: 服务模块,用于服务声明;指令模块,用于 指令声明过滤器模块,用于过滤器声明和 依赖于上述模块的应用程序级模块,以及 有初始化代码 因此,我创建了services.js文件,该文件仅包含: window.myservices = angular.module('services', []); 然后我添加了一些服务,其中每个服务文件都以以下内容开头: win

我想遵循angularjs的建议():

虽然上面的例子很简单,但它不会扩展到大型 应用。相反,我们建议您将应用程序中断为 多个模块如下所示:

服务模块,用于服务声明;指令模块,用于 指令声明过滤器模块,用于过滤器声明和 依赖于上述模块的应用程序级模块,以及 有初始化代码

因此,我创建了services.js文件,该文件仅包含:

window.myservices = angular.module('services', []);
然后我添加了一些服务,其中每个服务文件都以以下内容开头:

window.myservices.factory('service1', function() {
    ....
});
我对filters.js和directions.js做了同样的处理

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

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

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

根本不需要全局变量:

//定义您的服务
角度。模块('services',[])
.factory('service1',函数(){})
.factory('service2',function(){});
//定义主应用程序模块并指定依赖项
模块('MyApp',['services']);

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

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

file1.js

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

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

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

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

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


只有当我在一个文件中声明所有服务时,这才可以。我想分离到多个文件,并将每个服务放在不同的文件中。但在每个文件中,如何引用服务模块?我需要写一些东西,比如:(???).factory('service1',function(){}),我想你不明白我的意思。我问的是如何创建多个服务,以及如何将它们“附加”到位于不同js文件中的一个服务模块中。@Naor,这些服务在传递到
angular.module()
的数组中“附加”。第一个参数定义一个模块,第二个参数是它的依赖项数组。所以你不需要在
窗口中引用它们。*
好的,我想我明白你的意思了。但如果我有X服务,这最终会导致创建X模块,而我只需要一个模块。此外,每次我创建一个新服务时,我都必须记住将此模块添加到主服务模块。@Naor,您可以在一个模块中完成所有操作,如果您将第二个参数(数组)省略,但第一个引用的文件除外。i、 e.
andular.module('service')