Ionic 中的多项服务 - 如何在一个文件中构建多项服务?
Multiple services in Ionic - how to structure multiple services in one file?
我对 Ionic 服务有疑问。如您所知,Ionic 框架带有一个内置的 www 目录,其中包含 js 目录,其中包含 services.js 文件。我的第一个服务有效。我试图在同一个 services.js 文件中编写另一个服务,结果我得到了一个错误: Uncaught "SyntaxError: Unexpected token . http://localhost:8100/js/services.js Line: 57" 除了 "(index):28 Uncaught Error: [$injector:modulerr ] 由于以下原因无法实例化模块启动器:
错误:[$injector:modulerr] 无法实例化模块 starter.services 由于:
错误:[$injector:nomod] 模块 'starter.services' 不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。”无论如何,这是我的代码,看一看,让我知道我可以做些什么不同的事情。此外,如果您需要更多片段,请告诉我!
//services.js
//the first factory, API works
angular.module('starter.services', [])
.factory('API', function($http) {
var apiFooUrl = 'http://localhost:3000/api/do/thing'
return {
all: function(){
return $http.get(apiFooUrl + 's')
},
show: function(thingID){
console.log("stock service get running", thingID);
return $http.get(apiFooUrl + '/' + thingID)
}
};
});
//this is the one that returns the error
.factory('Users', function($http) {
var apiUrl = 'http://localhost:3000/api/users/'
return {
index: function(){
return $http.get(apiUrl)
}
show: function(id){
return $http.get(apiUrl + id)
}
}
})
已编辑以获取更多信息:
因此,在回应 David L 的评论时:
我已经像这样将它注入到我的 GlobalCtrl 中:
.controller('GlobalCtrl', function(Users, $rootScope, $state, $window,
Things, $scope){
$scope.newUser = {}
$scope.user = {}
//show all Users
Users.index().success(function(results){
$scope.users = results
})
})
它也会被注入到 DetailCtrl 中。
在 app.js 中,服务是这样注入的:
angular.module('starter', ['ionic', 'starter.controllers',
'starter.services'])
最终还有很多事情要做,所以我想确保我现在做对了。
我是否正确包含了 starter.controllers?如果我有多个,是否必须包含多个?
它们确实包含在 index.html 文件中。
您在关闭模块后添加了服务,
删除分号将解决此问题
}) //here reomved the semicolon
//this is the one that returns the error
.factory('Users', function($http) {
我对 Ionic 服务有疑问。如您所知,Ionic 框架带有一个内置的 www 目录,其中包含 js 目录,其中包含 services.js 文件。我的第一个服务有效。我试图在同一个 services.js 文件中编写另一个服务,结果我得到了一个错误: Uncaught "SyntaxError: Unexpected token . http://localhost:8100/js/services.js Line: 57" 除了 "(index):28 Uncaught Error: [$injector:modulerr ] 由于以下原因无法实例化模块启动器: 错误:[$injector:modulerr] 无法实例化模块 starter.services 由于: 错误:[$injector:nomod] 模块 'starter.services' 不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。”无论如何,这是我的代码,看一看,让我知道我可以做些什么不同的事情。此外,如果您需要更多片段,请告诉我!
//services.js
//the first factory, API works
angular.module('starter.services', [])
.factory('API', function($http) {
var apiFooUrl = 'http://localhost:3000/api/do/thing'
return {
all: function(){
return $http.get(apiFooUrl + 's')
},
show: function(thingID){
console.log("stock service get running", thingID);
return $http.get(apiFooUrl + '/' + thingID)
}
};
});
//this is the one that returns the error
.factory('Users', function($http) {
var apiUrl = 'http://localhost:3000/api/users/'
return {
index: function(){
return $http.get(apiUrl)
}
show: function(id){
return $http.get(apiUrl + id)
}
}
})
已编辑以获取更多信息: 因此,在回应 David L 的评论时: 我已经像这样将它注入到我的 GlobalCtrl 中:
.controller('GlobalCtrl', function(Users, $rootScope, $state, $window,
Things, $scope){
$scope.newUser = {}
$scope.user = {}
//show all Users
Users.index().success(function(results){
$scope.users = results
})
})
它也会被注入到 DetailCtrl 中。 在 app.js 中,服务是这样注入的:
angular.module('starter', ['ionic', 'starter.controllers',
'starter.services'])
最终还有很多事情要做,所以我想确保我现在做对了。
我是否正确包含了 starter.controllers?如果我有多个,是否必须包含多个? 它们确实包含在 index.html 文件中。
您在关闭模块后添加了服务, 删除分号将解决此问题
}) //here reomved the semicolon
//this is the one that returns the error
.factory('Users', function($http) {