AngularJS 无法将工厂加载到控制器中
AngularJS cannot load factory into controller
我有一个名为计时器的模块,其中包含我的控制器和服务。
这是我的 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
未知提供商
我的控制器是这样的
(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);
}
}
});
我做错了什么?为什么工厂没有注入我的控制器。此外,我已将所有 JS 文件包含在我的 base.html
中
我假设您必须调用您的服务:
})();
这里注入错误:
ManualTableController.$inject=['$scope','$filter','$http','$uibModal','$rootScope',
'$filter','Timer'];
function ManualTableController( $scope, $filter, $http, $uibModal,
$rootScope, ){ //you missed the injection here
..
}
您忘记在您的控制器中注入 Timer,$filter 被注入了两次。
我有一个名为计时器的模块,其中包含我的控制器和服务。 这是我的 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 未知提供商
我的控制器是这样的
(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);
}
}
});
我做错了什么?为什么工厂没有注入我的控制器。此外,我已将所有 JS 文件包含在我的 base.html
中我假设您必须调用您的服务:
})();
这里注入错误:
ManualTableController.$inject=['$scope','$filter','$http','$uibModal','$rootScope',
'$filter','Timer'];
function ManualTableController( $scope, $filter, $http, $uibModal,
$rootScope, ){ //you missed the injection here
..
}
您忘记在您的控制器中注入 Timer,$filter 被注入了两次。