Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 AngularJS从文件夹加载控制器_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS从文件夹加载控制器

Javascript AngularJS从文件夹加载控制器,javascript,angularjs,Javascript,Angularjs,我是AngularJS新手,对如何从结构化文件夹加载控制器和其他js有疑问 例如,我有一个结构: app/ -common -users --userController.js --userService.js -orders -app.js 如何从文件夹用户加载控制器和服务 还有一个小问题:什么是squre app.config(['someThing'], function($routeProvider) 你可以把代码放在你想放的地方。如果你把它们放到angular模块中,angular

我是AngularJS新手,对如何从结构化文件夹加载控制器和其他js有疑问

例如,我有一个结构:

app/
-common
-users
--userController.js
--userService.js
-orders
-app.js
如何从文件夹用户加载控制器和服务

还有一个小问题:什么是squre

app.config(['someThing'], function($routeProvider)

你可以把代码放在你想放的地方。如果你把它们放到angular模块中,angular就会找到它。因此,如果你在
/app/common/services/foo.js
中有一项服务,比如:

angular.module('app').service('foo', function() { ... });
您可以在
userController
中执行此操作:

angular.module('app').controller('UserController', function($scope, foo) { ... });
在这里,您可以看到我如何在控制器中注入
foo
。Angular
依赖项注入
系统足够智能,无论您将代码放在何处都可以找到它们

您还可以创建不同于
app
的模块,您可以有:

angular.module('other').service('bar', function() { ... });
在这里定义
app
模块,如下所示:

angular.module('app', []);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function($scope, foo) { ... }]);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function(f, g) { ... }]);
您只需要将新模块作为依赖项添加到那里,这就是
[]
的用途:

angular.module('app', ['other']);
现在,您也可以在控制器中使用服务

另一方面,您所讨论的语法是数组表示法,类似于:

angular.module('app', []);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function($scope, foo) { ... }]);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function(f, g) { ... }]);
如果在缩小代码时损坏了代码,则需要这样做,因为在缩小的代码中,可以得到如下内容:

angular.module('app', []);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function($scope, foo) { ... }]);
angular.module('app').controller('FooCtrl', ['$scope', 'foo', function(f, g) { ... }]);
如您所见,函数参数现在是
f
g
,Angular不知道根据这些名称注入什么,因此它查看我们提供的字符串,因此它将知道
f
$scope
g
foo

不需要直接使用此注释,有几种工具可以根据您的需要进行此操作

干杯

编辑:您需要将每个javascript文件添加到一个
中,否则将无法加载并且无法找到它

一个接一个地添加文件是一件痛苦的事情,因为你可以有5个,也可以有200个

最好对它们进行concat,为此我建议:
grunt-concat-sourcemap
,因为它将生成一个sourcemap,所以整个应用程序将有一个文件,但在开发工具中,您将在单独的文件中看到它们


我建议您检查linemanjs,这是一个开发javascript应用程序的好工具,它可以为您查看文件、源地图、缩小、数组表示法等…

您必须链接主HTML页面中的所有文件,并确保它们已加载。正如上面德怀特所指出的


另一种方法是使用Grunt.js之类的东西“构建”应用程序。这将包括将所有controller.js文件合并为一个文件,然后将其加载到HTML页面中。通过这种方式,所有文件都将单独用于开发,但会被编造出来用于部署

我想你错过了自动加载其他模块的意图。是的,Angular将能够加载其他模块,但它不知道在服务器上的何处可以找到它们!您应该将每个脚本文件放在页面上的
标记中以加载它们,或者将所有脚本连接到一个大脚本中。Grunt之类的框架或工具将帮助您实现这一点。您的评论就是im搜索的内容。请提供更多关于如何使用Grunt解决此问题的详细信息。