Javascript 在控制器中注入服务时出错
我试图使用AngularJs使用Web API,但我很难理解其中的角度 我创建了HTML、控制器和服务。对我来说一切似乎都很好,但当运行应用程序时,我得到了注入错误Javascript 在控制器中注入服务时出错,javascript,angularjs,Javascript,Angularjs,我试图使用AngularJs使用Web API,但我很难理解其中的角度 我创建了HTML、控制器和服务。对我来说一切似乎都很好,但当运行应用程序时,我得到了注入错误 html <html > <head> <title>Motors </title> <script src="/Scripts/angular.js"></script> <script src="/Scripts/angular
html
<html >
<head>
<title>Motors </title>
<script src="/Scripts/angular.js"></script>
<script src="/Scripts/angular-route.js"></script>
<script src="/View/motorController.js"></script>
</head>
<body ng-app="myApp" ng-controller="motorController">
<div>
<table class="table">
<tr>
<th>Id</th>
<th>Name</th>
<th>Country</th>
</tr>
<tr ng-repeat="m in motors">
<td>{{m.Id}}</td>
<td>{{m.Name}}</td>
<td>{{m.Country}}</td>
</tr>
</table>
</div>
</body>
</html>
角度服务
motorApp.factory('motorService', function ($http) {
var urlBase = 'http://localhost:40738/api';
var motorService = {};
motorService.GetAllMotors = function () {
return $http.get(urlBase + '/GetAllMotors');
};
return motorService;
});
在chrmoe浏览器控制台上获取时出错
Error: [$injector:unpr] Unknown provider: $motorServiceProvider <- $motorService <- motorController
错误:[$injector:unpr]未知提供程序:$motorServiceProvider您在MotorService前面有一个额外的$infort,请更改
发件人:
.controller('motorController', ['$scope', '$motorService',function ($scope, motorService)
.controller('motorController', ['$scope', 'motorService',function ($scope, motorService)
至:
.controller('motorController', ['$scope', '$motorService',function ($scope, motorService)
.controller('motorController', ['$scope', 'motorService',function ($scope, motorService)
您的代码存在的问题是,工厂使用了不同的模块名称“motorApp
”,而不是模块名称“module
”
使用
此外,在控制器中,您应该从注入的服务名称“motorService
”中删除“$”
我删除了额外的$infront汽车服务,但结果仍然是一样的。我也犯了同样的错误。是的,我犯了。这是“完全错误”错误:[$injector:unpr]未知提供商:motorServiceProvider可能是您在js文件中指定了一个不同的应用程序名称,正如上面提到的sahil,我尝试了上面建议的更改,但不幸的是没有成功。我仍然收到相同的错误。可能值得一提的是,我正在visual studio中尝试,而不是在记事本中。我建议请在此plnkr中创建一个相同的插件。我将服务和控制器放在同一个文件中,但实际上它们将位于不同的文件中。如果您检查此plnkr并跟踪问题,我甚至可以。谢谢,在这个插件中,问题是定义了两个ng应用程序,一个在html标记上,另一个在主体上。如果您在html,一切正常。请澄清。另外,如果您在不同的文件中加载服务和控制器,您如何在未定义模块的文件中引用模块??
var module = angular.module('myApp', [])
.controller('motorController', ['$scope', 'motorService',function ($scope, motorService) {
getMotors();
function getMotors() {
motorService.GetAllMotors()
.success(function (motors) {
$scope.motors = motors;
})
.error(function (error) {
$scope.status = 'Unable to load motor data: ' + error.message;
});
}
}]);