gpt4 book ai didi

javascript - 简单的 Angular 服务不起作用

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

我正在尝试创建一个 Angular 服务,但它不起作用。我已经尝试了很多方法并进行了全面检查。请帮忙

 //service 

angular
.module('RDash')
.factory('googleLogin', googleLogin);

function googleLogin()
{
this.testFunc = function ()
{
console.log("THIS IS A TEST SERVICE");
}
};

下面:尝试调用服务测试函数

//controller

angular
.module('RDash')
.controller('ComposeCtrl', ['$scope','$rootScope','$http','googleLogin', ComposeCtrl]);

function ComposeCtrl($scope, $rootScope, $http, googleLogin) {
console.log("ComposeCTRL active");

googleLogin.testFunc(); // this doesnt work, error: "main.min.js:2 Error: [$injector:undef] http://errors.angularjs.org/1.5.8/$injector/undef?p0=googleLogin"

我觉得问题出在注入(inject)上,我只是不知道在哪里。请帮忙谢谢

最佳答案

工厂需要返回函数引用,并且您需要声明变量 testFunc (回答原因 here ):

更新工作片段。

angular.module('RDash', []);
angular
.module('RDash')
.factory('googleLogin', googleLogin);

function googleLogin() {
var testFunc = function() {
console.log("THIS IS A TEST SERVICE");
}
return {
testFunc : testFunc
}
};

angular
.module('RDash')
.controller('ComposeCtrl', ['$scope', '$rootScope', '$http', 'googleLogin', ComposeCtrl]);

function ComposeCtrl($scope, $rootScope, $http, googleLogin) {
console.log("ComposeCTRL active");

googleLogin.testFunc();
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="RDash" ng-controller="ComposeCtrl"></div>

angular
.module('RDash')
.factory('googleLogin', googleLogin);

function googleLogin() {

var testFunc = function() {
console.log("THIS IS A TEST SERVICE");
}

return {
testFunc: testFunc
}

};

关于javascript - 简单的 Angular 服务不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40795217/

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