如何解决内置的AngularJS应用程序的依赖问题?

我是AngularJS的新手,并且正在创建一个将使用Grunt构建的应用程序。

当我构建并运行我的应用程序时,我注意到与依赖加载顺序相关的一些问题:

Uncaught Error: [$injector:nomod] Module 'mycompany.admin.forms' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.2.13/$injector/nomod?p0=mycompany.admin.forms 

在构建的应用程序文件中,该模块在声明之前正在使用:

angular.module('mycompany.admin.forms').controller('editController', ['$scope', function($scope) {
    // ...
}]);

angular.module('mycompany.admin.forms', [])

  .config(['$routeProvider', function($routeProvider) {
    // ...
  }]);

以下是我的项目gruntfile.js中的相关代码片段:

grunt.initConfig({
    distdir: 'build',
    pkg: grunt.file.readJSON('package.json'),
    src: {
        js: ['src/**/*.js'],
    },
    concat: {
        dist: {
            src: ['<%= src.js %>', '<%= src.jsTpl %>'],
            dest: '<%= distdir %>/admin/app.js'
        }
    }
    ...
});

我知道我可以通过将给定模块的所有源代码放入一个文件来解决此问题; 但是,我想尝试将每个事物(每个控制器,每个服务等)保存在自己的文件中。

我如何解决这个依赖性加载顺序问题?


什么命令是咕噜连接你的文件? 看起来你只是在读一个目录,并且如果模块声明所在的javascript文件位于控制器所在的文件之后,则连接文件将以错误的顺序构建。

可能最简单的解决方案是将包含模块声明的文件(使用[])显式列出作为源数组中的第一个文件。


为了解决依赖性负载问题,我建议你使用Require.js

它与Angular的效果非常好,而且你还有一个用于构建的咕噜插件。

链接地址: http://www.djcxy.com/p/77581.html

上一篇: How to solve dependency issues with built AngularJS app?

下一篇: Assigning to a new value to an object passed into a function in JavaScript