コントローラーとサービスを組み込んだ 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']);
})();
コントローラーの依存関係としてタイマーを追加するとすぐに、エラー 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 ファイルを含めました。