Javascript 未知提供程序:membershipServiceProvider<;-会员服务<;-angularjs依赖项注入中的membershipController错误
我能够从一个javascript文件运行代码。但当我想将服务分离到一个单独的文件中(在customServices文件夹中)时,它给出了一个注入器错误:-未知提供程序。当调试器放置在my membershipService.js中时-它被命中,但仍然抛出错误 类似地,我无法单独路由到另一个文件。它给出了同样的错误 文件夹结构:- 公开的 控制者 1.app.js 海关服务 1.membershipService.js 观点 1.membershipdetails.html 2.index.html Index.html代码:-Javascript 未知提供程序:membershipServiceProvider<;-会员服务<;-angularjs依赖项注入中的membershipController错误,javascript,angularjs,angularjs-service,modularity,Javascript,Angularjs,Angularjs Service,Modularity,我能够从一个javascript文件运行代码。但当我想将服务分离到一个单独的文件中(在customServices文件夹中)时,它给出了一个注入器错误:-未知提供程序。当调试器放置在my membershipService.js中时-它被命中,但仍然抛出错误 类似地,我无法单独路由到另一个文件。它给出了同样的错误 文件夹结构:- 公开的 控制者 1.app.js 海关服务 1.membershipService.js 观点 1.membershipdetails.html 2.index.htm
<head>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="stylesheets/style.css" rel="stylesheet">
<script
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js">
</script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-
route.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-
resource.js"></script>
<script src="CustomServices/membershipService.js"></script>
<script src="ngRoute/viewroute.js" type="text/javascript"></script>
<script src="controllers/app.js"></script>
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
</head>
<div>
<div class="container pt-5">
<div ng-view></div>
</div>
</div>
注意:-它一直工作到这里。但一旦我将服务代码移动到不同的文件,如开始文件夹结构所示,它就会给出未知的提供者错误
我的服务代码-我在哪里得到错误:-
var app = angular.module("tdmModule", ["ngRoute"]);
app.service("membershipService", function
($location,$rootScope,$http,$filter,$cookies,$timeout,$document,$window)
{
this.jsondata = function(getdata){
var d = {};
console.log("Service calling " +getdata);
if(getdata != undefined && getdata.TopN != undefined){
d.TopN = getdata.TopN;
}
if(getdata != undefined && getdata.MemberNo != undefined){
d.MemberNo = getdata.MemberNo;
}
if(getdata != undefined &&getdata.MemberStartDateHigh !=undefined){
d.MemberStartDateHigh = getdata.MemberStartDateHigh;
}
return d;
};
});
我经历过
1. $注入器/取消注入器
2.
3.
4.
我想我遗漏了一些概念上的东西。为了可读性,一些代码被故意删除
我对服务注入的概念是它是一个简单的js文件,可以注入到应用程序中的任何控制器中,并根据应用程序使用。它也需要用正确的文件夹结构注册 我在Plunk中添加了您的代码以查看发生了什么 首先,您的示例中缺少了大量的
}
和)
,这使得您的示例无法编译
然后,当我解决这个问题时,它抱怨了setnotanoption
和compileservice
,您在membershipController
中将其定义为依赖项。
您的示例中没有提供这些实例
当移除这些时,一切正常
注意:我将角度模块称为angular.module(“tdmModule”)
plunker.在angularjs引导之前,您是否也在html文档中包含了新文件(通过标记)?包含在index.html中。在
getdata.MemberStartDateHigh上出现语法错误之后,我将其包括在内=未定义
。也许你在减少问题的时候会把这个问题放大?语法错误已纠正@tshI.module(“tdmModule”).service(“membershipService”---。它未按预期工作。错误:$injector:nomodule不可用模块“tdmModule”不可用!您可能拼错了模块名称或忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。错误:[$injector:unpr]也发生了。无论如何,感谢您的响应和概念:)@mank91好的,不要在主文件中定义var app=angular.module(“tdmModule”)。在angular.module()上一直使用angular.module(“tdmModule”).config等。谢谢主席先生的跟进。我在主文件app.js中尝试了相同的方法。删除了app变量并放置了angular.module(“tdmModule”)。仍然出现相同的错误。@mank91您是否可以更改加载脚本的顺序,您可以在其中定义角度。模块(“tdmModule”,“ngRoute”])应在相关脚本之前加载
var app = angular.module("tdmModule", ["ngRoute"]);
app.service("membershipService", function
($location,$rootScope,$http,$filter,$cookies,$timeout,$document,$window)
{
this.jsondata = function(getdata){
var d = {};
console.log("Service calling " +getdata);
if(getdata != undefined && getdata.TopN != undefined){
d.TopN = getdata.TopN;
}
if(getdata != undefined && getdata.MemberNo != undefined){
d.MemberNo = getdata.MemberNo;
}
if(getdata != undefined &&getdata.MemberStartDateHigh !=undefined){
d.MemberStartDateHigh = getdata.MemberStartDateHigh;
}
return d;
};
});