我正在测试一个使用creator创建的离子应用程序。
我把下面的代码放在services.js
中。
角度模块("应用程序服务",[])
.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>
它不起作用,因为您尚未加载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 中也修复了这个问题