AngularJS控制器使用工厂函数

AngularJS controller using factory function

本文关键字:工厂 函数 控制器 AngularJS      更新时间:2023-09-26

我有以下代码,其中controller使用factory函数通过api请求获取用户数据。

控制器

myApp.controller('UserApiCtrl', function($scope,$auth,Account){
    $scope.getProfile = function(){
        Account.getProfile()
            .then(function(response){
                $scope.user = response.data;
            })
            .catch(function(response){
                // errors handled here
            })
    };
    $scope.getProfile();
})
工厂

angular.module('MyApp')
    .factory('Account', function($http){
        return {
            getProfile: function(){
                return $http.get('/api/me');
            }
        }
    });

现在在控制器当我console.log(response.data), json数据是可用的,但当我console.log($scope.getProfile())它是未定义的。

谢谢! !

这就是答案,阅读下面的要点来理解这个概念。

  1. 您正在将值赋给作用域变量$scope。用户,所以你可以为它做日志。
  2. 你正在成功地获得响应,所以你也可以再次登录这里。

但是当您尝试记录console.log($scope.getProfile())时,它不会返回任何内容。

如果得到响应。下面的代码应该可以正常工作。

myApp.controller('UserApiCtrl', function($scope,$auth,Account){
    $scope.user = {}; // Change to [] if response.data is array
    $scope.getProfile = function(){
        Account.getProfile()
        .then(function(response){
            $scope.user = response.data;
            console.log($scope.user);
        })
        .catch(function(response){
                // errors handled here
            })
    };
    $scope.getProfile();
});