我有一个如下服务功能。
app.service('UserService',['userFactory',function(userFactory)) {
this.fetchAllUsers =function(){
userFactory.getUsers(function(data){
return data['body']; //Return Array of objects
}),function(error){
console.log("error while retrieving users")
}
}
}])
我想在控制器中调用此函数,并将返回值分配给变量。我尝试了以下方式
$scope.usersList=userService.fetchAllUsers();
但$ scope.usersList未定义。如何从服务中获取返回的值。
答案 0 :(得分:0)
您可能没有在控制器中inject提供服务。
myApp.controller('MyController', ['$scope', 'userService', function($scope, userService) {
$scope.usersList = userService.fetchAllUsers();
}]);
答案 1 :(得分:0)
这是你在控制器中的方式。
我假设你有一个名为'userFactory'
myApp.controller('MyController', ['$scope', 'userFactory', function($scope, userFactory) {
$scope.fetchAllUsers = function() {
userFactory.getUsers().then(function(response) {
$scope.userlist = data;
}, function() {});
}
}]);
不要在控制器中同时使用$scope and this
。使用其中之一。并调用服务方法getUsers
。并获得成功回调定义为then
的结果。
答案 2 :(得分:-1)
您无法立即返回异步调用的结果,但可以在success(then) callback
中分配结果。
注意:[{1}}已弃用success/error callback
,您必须使用angularjs1.6
。
then/catch
关于如何使用回调定义/调用服务API。
this.fetchAllUsers =function(){
userFactory.getUsers(function(data){
$scope.usersList = data['body'];
}),function(error){
console.log("error while retrieving users")
}
}