业力控制器未加载范围
karma controller not loading scope
所以我正在学习如何使用业力。我已经阅读了一些关于如何将范围注入我的项目的教程,但我仍然在
上遇到错误
Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope
http://errors.angularjs.org/1.6.3/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope
这是我的规格:
describe('InfoController', function() {
var InfoController, state;
beforeEach(angular.mock.module('ptoApp.controller'));
var $controller
var scope;
beforeEach(inject(function($controller,$scope, $state,$rootScope, employeeTestFactory) {
scope = $rootScope.$new();
InfoController = $controller('InfoController', {
$scope: scope,
state: $state,
employeeTestFactory: employeeTestFactory
});
}));
// Verify our controller exists
it('should be defined', function() {
expect(InfoController).toBeDefined();
});
});
这是我的控制器:
.controller('InfoController', ['$scope', '$state','$rootScope', 'employeeTestFactory', function ($scope, $state, $rootScope, employeeTestFactory) {
$scope.loggedIn = {};
$scope.displaySection = true;
$rootScope.callInfo=function(){
employeeTestFactory.get($rootScope.email).then(function(result) {
$scope.loggedIn = result;
});
}
$scope.getPercentUsed = function(){
if(typeof $rootScope.employee === 'undefined' || typeof $rootScope.employee.totalTimeUsed === 'undefined' || typeof $rootScope.employee.totalTimeAccrued === 'undefined') return 0;
var percentage = ($rootScope.employee.totalTimeUsed/$rootScope.employee.totalTimeAccrued)*100;
return (percentage > 100) ? 100 : percentage;
}
$scope.hideSession = function(){
$scope.displaySection = !$scope.displaySection;
}
}])
现在我听说了作用域,立即将新的 rootScope 附加到它很有用,所以我添加了 scope = $rootScope.$new();然后在创建控制器时将其设置为 $scope: scope。仍然收到错误。
在此先感谢您的帮助。
在您的业力规范文件中,从您的 inject
函数参数中删除 $scope
:
- beforeEach(inject(function($controller,$scope, $state,$rootScope, employeeTestFactory) {
+ beforeEach(inject(function($controller, $state, $rootScope, employeeTestFactory) {
所以我正在学习如何使用业力。我已经阅读了一些关于如何将范围注入我的项目的教程,但我仍然在
上遇到错误Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope http://errors.angularjs.org/1.6.3/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope
这是我的规格:
describe('InfoController', function() {
var InfoController, state;
beforeEach(angular.mock.module('ptoApp.controller'));
var $controller
var scope;
beforeEach(inject(function($controller,$scope, $state,$rootScope, employeeTestFactory) {
scope = $rootScope.$new();
InfoController = $controller('InfoController', {
$scope: scope,
state: $state,
employeeTestFactory: employeeTestFactory
});
}));
// Verify our controller exists
it('should be defined', function() {
expect(InfoController).toBeDefined();
});
});
这是我的控制器:
.controller('InfoController', ['$scope', '$state','$rootScope', 'employeeTestFactory', function ($scope, $state, $rootScope, employeeTestFactory) {
$scope.loggedIn = {};
$scope.displaySection = true;
$rootScope.callInfo=function(){
employeeTestFactory.get($rootScope.email).then(function(result) {
$scope.loggedIn = result;
});
}
$scope.getPercentUsed = function(){
if(typeof $rootScope.employee === 'undefined' || typeof $rootScope.employee.totalTimeUsed === 'undefined' || typeof $rootScope.employee.totalTimeAccrued === 'undefined') return 0;
var percentage = ($rootScope.employee.totalTimeUsed/$rootScope.employee.totalTimeAccrued)*100;
return (percentage > 100) ? 100 : percentage;
}
$scope.hideSession = function(){
$scope.displaySection = !$scope.displaySection;
}
}])
现在我听说了作用域,立即将新的 rootScope 附加到它很有用,所以我添加了 scope = $rootScope.$new();然后在创建控制器时将其设置为 $scope: scope。仍然收到错误。 在此先感谢您的帮助。
在您的业力规范文件中,从您的 inject
函数参数中删除 $scope
:
- beforeEach(inject(function($controller,$scope, $state,$rootScope, employeeTestFactory) {
+ beforeEach(inject(function($controller, $state, $rootScope, employeeTestFactory) {