AngularJS:在服务中传递变量

时间:2014-02-14 10:03:49

标签: angularjs angular-services

我正在尝试将登录逻辑移动到服务..但我不知道如何将登录详细信息传递给服务。

我有:

$scope.login = function (login_username, login_password) {
    $http.post('/login', {userName: login_username, password: login_password}).success(function(response) {
        ....
    });
});

我要做的是:

1。有一项服务会查看详细信息并获取用户的个人资料......

app.factory('userProfile', function($http) {
  return {
    getUserProfile: function() {
      return $http.post('/login',{userName: userNameVar, password: passwordVar});
    }
  };
});

...但是当用户点击登录

时,请将userNameVarpasswordVar替换为用户详细信息
function appCtrl($scope, userProfile) {
    $scope.login = function (login_username, login_password, rememberMe) {
        userProfile.getUserProfile().success(function(profile) {
            $scope.uProfile = profile;
            console.log($scope.uProfile);
        });
    };
};

我尝试在{userName: login_username, password: login_password}中插入userProfile.getUserProfile(),例如userProfile.getUserProfile({userName: login_username, password: login_password})

1 个答案:

答案 0 :(得分:4)

将服务中的getUserProfile功能更改为:

app.factory('userProfile', function($http) {
  return {
    getUserProfile: function(userNameVar, passwordVar) {
      return $http.post('/login',{userName: userNameVar, password: passwordVar});
    }
  };
});

然后你的控制器看起来像:

function appCtrl($scope, userProfile) {
    $scope.login = function (login_username, login_password, rememberMe) {
        userProfile.getUserProfile(login_username, login_password).success(function(profile) {
            $scope.uProfile = profile;
            console.log($scope.uProfile);
        });
    };
};