0

我有一个名为 timer 的模块,其中包含了我的控制器和服务。这是我的 module.js 文件。

(function () {
  'use strict';

  angular.module('timesheet.timer',[
      'timesheet.timer.controllers',
      'timesheet.timer.services'
  ]).filter('digits', function() {
    return function(input) {
       if (input < 10) input = '0' + input;

      return input;
    }
  });

      angular.module('timesheet.timer.controllers',[]);
      angular.module('timesheet.timer.services',[]);
 })();

过滤器是我需要的自定义过滤器,忽略它。

在我的服务中,我有

(function () {
    'use strict';

    angular
        .module('timesheet.timer.services')
        .factory('Timer', Timer);

    Timer.$inject = ['$http'];

    function Timer($http){
        var timer = {
            get: get
        };
        return timer;

       function get(dateString,emp_id){
             return $http.get("/timesheet/employee/"+emp_id+"/tasks/?date=" + dateString);
        }
    }

});

我的主要 app.js 看起来像这样。

(function () {
  'use strict';

  angular
    .module('timesheet', [
      'angular.filter',
      'chart.js',
        'ngCookies',
         'ngStorage',
      'ui.bootstrap',
      'daterangepicker',
      'xeditable',
      'timesheet.routes',
      'timesheet.timer',
      'timesheet.authentication'


    ]).factory('httpRequestInterceptor',['$cookies', function ($cookies) {
        return {
            request: function (config) {
                var token = $cookies.get('Token');
                if(token) {
                    config.headers['token'] = token;
                }
                return config;
            }
        };
    }]).config(['$httpProvider',function($httpProvider) {
       $httpProvider.interceptors.push('httpRequestInterceptor');
      }])
      .run(function(editableOptions) {
         editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default'

    });

  angular
    .module('timesheet.routes', ['ngRoute']);
})();

一旦我在控制器中添加 Timer 作为依赖项,我就会收到错误 Error: $injector:unpr Unknown Provider

我的控制器是这样的

    (function () {

        angular.module('timesheet.timer.controllers')
            .controller('ManualTableController',ManualTableController);

        ManualTableController.$inject=['$scope','$filter','$http','$uibModal','$rootScope','$filter','Timer'];

        function ManualTableController( $scope, $filter, $http, $uibModal, $rootScope){

            $rootScope.totalDuration = "";
            $scope.noTask = false;
            $scope.error = false;
            $rootScope.tasks = "";
            var emp_id = $rootScope.emp_id;
            $scope.dateString = getDateString($scope.dt);
            $scope.date = angular.copy($scope.dt);

            Timer.get($scope.dateString,emp_id).then(timerSuccessFn, timerErrorFn);
            function timerSuccessFn(data, status, headers, config) {
            console.log(data);
           }
}
});   

我究竟做错了什么?为什么工厂没有注入我的控制器。我还在我的 base.html 中包含了所有 JS 文件

4

2 回答 2

0

我假设您必须调用您的服务:

})();
于 2016-11-14T10:37:19.707 回答
0

此处注入错误:

ManualTableController.$inject=['$scope','$filter','$http','$uibModal','$rootScope',
'$filter','Timer'];

function ManualTableController( $scope, $filter, $http, $uibModal, 
$rootScope, ){ //you missed the injection here
..
}

您忘记在控制器中注入 Timer 并且 $filter 被注入了两次。

于 2016-11-14T10:52:19.330 回答