将文件分隔到目录时加载模块时出现问题

时间:2016-01-15 22:00:26

标签: angularjs ruby-on-rails-4

我正在开发AngularJS 1和Rails 4.2应用程序。我正在使用AngularRailsTemplates来加载我的AngularJS模板。

我目前拥有one single file中的所有AngularJS控制器,配置,路由和工厂。我正试图将这些实体分成指定的目录(见下文)。

| application.js

    | controllers
        | guest.js
        | user.js

    | factories
        | lists.js

    | templates
        | home.html
        | dashboard.html

我已将控制器和工厂文件分成模块。例如,在我的控制器目录中,我有两个控制器文件:

控制器/ guest.js

angular.module('diction.controllers')

/*  Guest Controller 
 *  controller for static clientside for guest users
 *
*/
.controller('GuestCtrl', ['$scope', '$stateParams', 'Auth', '$http', '$window',
    // logic
}]);

控制器/ user.js的

angular.module('diction.controllers')

/*  User Controller 
 *  controller for users
 *
*/
.controller('UserCtrl', ['$scope', '$stateParams', 'Auth', '$http', '$window',
    // logic
}]);

我正在尝试在我的application.js文件中加载这些控制器模块,它目前看起来像这样。

//= require angular-rails-templates
//= require_tree .

angular.module('diction', [
    'ui.router', 
    'templates', 
    'diction.controllers'
])

/*  Routing configuration for various 'states'
 *
*/
.config(['$stateProvider', '$urlRouterProvider',

    // Set state providers
    function($stateProvider, $urlRouterProvider) {$stateProvider

        // home
        .state('home', {
          url: '/home',
          templateUrl: 'home.html',
          controller: 'GuestCtrl',
        })

    }
]);

当我查看页面时,我收到“模块不可用”错误:

  

错误:$ injector:nomod模块不可用

     

模块'diction.controllers'不可用!你要么拼错了   模块名称或忘记加载它。如果注册模块,请确保   您将依赖项指定为第二个参数。

非常感谢任何有用的提示。

1 个答案:

答案 0 :(得分:0)

我可以想象,您使用diction.controllers作为角度的参考,并没有创建它。

使用

尝试diction.controllers初始化部分
angular.module('diction.controllers', []);

因此导致

angular.module('diction.controllers', [])
.controller('GuestCtrl', ['$scope', '$stateParams', 'Auth', '$http', '$window',
    // logic
}]);