我正在测试使用创建者创建的离子应用。
我将以下代码放在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>
答案 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