错误:[$ injector:unpr]未知提供者:$ resourceProvider< - $ resource< - EventService?

时间:2016-04-16 06:39:35

标签: angularjs ionic-framework

我正在测试使用创建者创建的离子应用。

我将以下代码放在services.js

angular.module(' app.services',[])

.factory('BlankFactory', [function(){
}])
.factory('EventService', ['$resource', function ($resource) {
    return $resource('https://.....net/api/events/:id');
}])
.service('BlankService', [function(){
}]);

controllers.js中的以下代码。

angular.module('app.controllers', [])
......
  .controller('nightlifeCtrl', function ($scope, EventService) {
    $scope.events = EventsService.query({category: "Nightlife"});
})

但是我在js控制台中遇到以下错误?

ionic.bundle.js:25642 Error: [$injector:unpr] Unknown provider: $resourceProvider <- $resource <- EventService
http://errors.angularjs.org/1.4.3/$injector/unpr?p0=%24resourceProvider%20%3C-%20%24resource%20%3C-%20EventService
    at ionic.bundle.js:13380
    at ionic.bundle.js:17574
    at Object.getService [as get] (ionic.bundle.js:17721)
    at ionic.bundle.js:17579
    at getService (ionic.bundle.js:17721)
    at Object.invoke (ionic.bundle.js:17753)
    at Object.enforcedReturnValue [as $get] (ionic.bundle.js:17615)
    at Object.invoke (ionic.bundle.js:17762)
    at ionic.bundle.js:17580
    at getService (ionic.bundle.js:17721)

我尝试通过angular.module('...', ['ngResource'])添加依赖项,但是出现了以下错误。

ionic.bundle.js:17697 Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [$injector:modulerr] Failed to instantiate module app.controllers due to:
Error: [$injector:modulerr] Failed to instantiate module ngResource due to:

我在js文件中找不到文件angular-resource.js。我应该避免使用ngResource并使用普通的ajax调用吗?

index.html

<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/routes.js"></script>
<script src="js/services.js"></script>
<script src="js/directives.js"></script>

1 个答案:

答案 0 :(得分:1)

它无效,因为您尚未加载angular-resource依赖项。如果要在angular中使用外部模块,则需要通过将第二个数组参数中的模块名称传递给angular.module来将其作为模块定义中的依赖项加载。在您的情况下,模块的名称是ngResource。加载angular-resource.js的脚本文件,然后将其添加为依赖项,如下所示:

angular.module('app.services', ['ngResource'])

此外,我发现您尚未在app.services中加载app.controller作为依赖项。您需要加载该依赖项或在应用程序定义模块中加载这两个依赖项:

angular.module('app', [
  'app.services',
  'app.controllers'
]);

更新JSBIN并修复了控制台错误

您的代码也有一个拼写错误。您在控制器中指的是EventsService,而名称为EventService。我已经在jsbin

中解决了这个问题