AngularJS多厂?

时间:2015-02-19 19:06:51

标签: angularjs angularjs-factory javascript-injection

我无法理解Angular中控制器和工厂之间的区别。

我的主要应用程序如下所示:

     angular.module('myApp', [
            'ui.router',
            'ngAnimate',
            'myApp.angular-loading-bar',
            'myApp.translate',
            'myApp.repository',
            'myApp.services',
            'myApp.directives',
            'myApp.controllers',
            'myApp.filters',
            'myApp.version'
     ]);

我在controllers.js文件中包含所有控制器:

    angular.module('myApp.controllers', [
           'myApp.mainController',
           'myApp.headerController',
           'myApp.rootController'
     ]);

例如我的控制器文件是

    var root = angular.module('myApp.rootController', []);

    root.controller('rootController', [
         '$scope',
         '$log',
          function($scope, $log) {

            function init() {
              $log.debug('[rootController] Init...');
            }

            init();
           }
    ]);

一切都像魅力一样。当我扩展关于新角度模块的应用程序' myApp.repository'

    angular.module('myApp.repository', [
         'myApp.newsRepository'
    ]);

newsRepository.js:

   var newsRepository = angular.module('myApp.newsRepository', []);

    newsRepository.factory('newsRepository', [
                   $log',
                  '$http',
                  '$q',
                   function($log, $http, $q) {

                      var service = {
                          check: function() {

                               var deferred = $q.defer();

                               var request = $http({
                                         method: 'GET',
                                         url: 'news'
                                });

                               return deferred;
                          }
                   };

               return service;
             }
   ]);

我明白了:

 Error: [$injector:unpr] Unknown provider: newsRepositoryProvider <- newsRepository <- headerController

但是如果我在repository.js中将NewRepository.js的主体都恢复正常。

好的,这不是结果,但是在index.html中浏览器资源资源管理器的某些部分我看到了所有的js文件,但有些文件不可用?嗯... gulp / misspellings?

复杂的结果:)

1)使用这样的文件的相对路径...            从现在开始,所有js文件中的abasolute路径都是app.js。

1 个答案:

答案 0 :(得分:1)

在这一行:

<强> newsRepository.js

// wrong
var newsRepository = angular.module('myApp.repository', []);

// right
var newsRepository = angular.module('myApp.newsRepository', []);