Angularjs 无法从工厂访问控制器中的数据
我正在开发我的第一个Angle应用程序。但我无法访问控制器中来自服务的数据。 服务代码如下Angularjs 无法从工厂访问控制器中的数据,angularjs,Angularjs,我正在开发我的第一个Angle应用程序。但我无法访问控制器中来自服务的数据。 服务代码如下 loginApp.controller ('LoginController',function ($scope, $rootScope, $location,authFactory){ $scope.submit= function (){ authFactory.login($scope.username, $scope.password)
loginApp.controller ('LoginController',function ($scope, $rootScope, $location,authFactory){
$scope.submit= function (){
authFactory.login($scope.username, $scope.password).then(function (status) {
console.log("status is" +status.token);
});
};
});
var BASE=“”
我的控制器代码如下
loginApp.controller ('LoginController',function ($scope, $rootScope, $location,authFactory){
$scope.submit= function (){
authFactory.login($scope.username, $scope.password).then(function (status) {
console.log("status is" +status.token);
});
};
});
我的问题是我能够从服务访问results.token,但如果我试图从控制器访问与status.token相同的令牌,它将给出“undefined”。请帮助解决此问题。只需返回$http承诺,在控制器中处理它:
authFactory.login($scope.username, $scope.password)
.success(function(status) {
console.log("status is" +status.token);
});
在职:
return $http({ url: BASE+'/login' ,
method: "POST",
data: loginData
});
在控制器中:
authFactory.login($scope.username, $scope.password)
.success(function(status) {
console.log("status is" +status.token);
});
我的建议是一个基于REST和基于承诺的angular模块,它可以让您轻松编写一些服务来通信API。例如,在您的案例中:
myModule.factory('authFactory', ['Restangular',
function(Restangular) {
return {
login: function(name, password) {
// post /login
return Restangular.all('login').post({"emailId":"'+name+'","password":"'+password+'"});
}
};
}
]);
更新:在控制器中,应该在末尾添加此代码以调用函数
$scope.submit();
您的服务器端代码是什么?您是否可以只记录
状态
,或者该状态是否也未定义?回答此问题的一个重要部分(对于刚接触Angular和promises的人来说很常见)是解释$http
使用Promission来管理异步请求。因此,当login
使用return$http(…)
返回时,它将返回一个承诺,控制器可以使用上面的示例连接到该承诺以检索结果值。新手经常做OP上面所做的事情,认为从.success
函数返回将使登录
返回响应结果。事实并非如此。虽然Restangular是一个漂亮的库,我自己也在使用,但这并不能解决问题。您还应该解释如何将该数据传送到控制器