我正在处理一个角度项目,在那里我将新功能添加到较旧的项目。
我想用我的控制器注册一个服务,但得到一个错误,我的控制器无法找到服务中的功能。无法从控制器访问服务angularjs
这里是我的控制器是如何定义的(我知道这不是标准的方式,但我必须遵循这一点,因为整个应用程序一样。)
angular.module("test").controller("listCtrl", listCtrl);
listCtrl.$inject = ["$scope", "$state", "$timeout", "listService", "$rootScope"];
function listCtrl($scope, $state, $timeout, listService, $rootScope) {
this.$scope= $scope;
$scope.service=listService;
//some other definitions
$scope.items = $scope.service.getPage(%function_ARGUMENTS%);
}
这里的服务是如何定义的:
angular.module("test").service("listService", listService);
listService.$inject = ['$state', '$rootScope'];
function listService($state, $rootScope) {
function getPage(%function_ARGUMENTS%) {
//getPage function definition goes here
}
}
现在,出于某种原因,我得到的错误:
Cannot read property 'getPage' of undefined
我想不出什么migh不会造成这种情况。
$scope
是如何定义的问题?如果是,那么假设this.$scope=$scope
不能修改,那么这样做的正确方法是什么。
编辑:修复了问题中的复数错字。我的程序中没有这样的打字错误,这是我在SO打字时犯的一个错误。
您在'$ scope.services中有错字。getPage(%function_ARGUMENTS%);'它必须是'$ scope.service.getPage(%function_ARGUMENTS%);' –
我修复了问题中的错字,错字不是导致我主程序错误的原因。 – ChaoticTwist
我也发布了答案,反正你发现问题很重要。 –