gpt4 book ai didi

javascript - 无法从 Controller angularjs 访问服务

转载 作者:行者123 更新时间:2023-11-28 18:06:47 26 4
gpt4 key购买 nike

我正在开发一个 Angular 项目,我正在向旧项目添加新功能。
我正在尝试使用 Controller 注册服务,但出现错误, Controller 无法找到服务中的功能。

这是我的 Controller 的定义方式(我知道这不是标准方式,但我必须遵循这一点,因为整个应用程序都是如此。)

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

我不知道是什么原因造成的。
问题在于 $scope 的定义方式吗?如果是,那么假设 this.$scope=$scope 无法修改,那么正确的方法是什么。

编辑:修正了问题中的复数拼写错误。我的程序中没有这个错字,这是我在 SO 上输入时犯的错误。

最佳答案

预计会出现错误,因为您定义了 $scope.service,而使用 $scope.services 时请注意额外的“s”。所以使用正确的变量

$scope.items = $scope.service.getPage(%function_ARGUMENTS%);

但是,您将收到另一个错误,因为函数 getPage 与返回服务对象关联。

function listService($state, $rootScope) {
this.getPage = function() {
//getPage function definition goes here
}
}

或者,

function listService($state, $rootScope) {
function getPage () {
//getPage function definition goes here
}

this.getPage = getPage;
}

关于javascript - 无法从 Controller angularjs 访问服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42412056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com