我有一个名为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作为依赖项,我就会收到错误错误:$ injector:unpr 未知提供商
我的控制器是这样的
(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文件
答案 0 :(得分:0)
我认为您必须调用您的服务:
})();
答案 1 :(得分:0)
注射时出现错误:
ManualTableController.$inject=['$scope','$filter','$http','$uibModal','$rootScope',
'$filter','Timer'];
function ManualTableController( $scope, $filter, $http, $uibModal,
$rootScope, ){ //you missed the injection here
..
}
你忘记在你的控制器中注入Timer,并且$ filter被注入两次。