如何将服务中返回的值以角度形式提供给控制器?

时间:2017-04-27 07:08:07

标签: angularjs service controller

我有一个如下服务功能。

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未定义。如何从服务中获取返回的值。

3 个答案:

答案 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")
    }
}