我在角度服务中有以下代码:
this.login = function(email, password)
{
var promise = $http({
url: 'user/authenticate',
method: "POST",
data: { 'email' : email, 'password' : password }
});
promise.then(
function(payload) {
return true;
}
);
}
这是我的主叫代码:
var loginResult = loginService.login(data.email, data.password);
alert(oginResult);
if (loginResult)
{
$modalInstance.close("");
$state.go("home");
}
else
{
$scope.error = "Login not found.";
}
我试图恢复到调用service.login。然而我所得到的都是未定义的。
任何帮助将不胜感激,谢谢你。
答案 0 :(得分:0)
您需要更新代码。从服务中返回承诺,并在控制器中的 .then 中完成工作。
服务
this.login = function(email, password)
{
var promise = $http({
url: 'user/authenticate',
method: "POST",
data: { 'email' : email, 'password' : password }
});
return promise;
}
控制器
loginService.login(data.email, data.password).then(function(loginResult){
alert(loginResult);
if (loginResult)
{
$modalInstance.close("");
$state.go("home");
}
else
{
$scope.error = "Login not found.";
}
});
答案 1 :(得分:0)
您需要在SErvice中创建承诺
this.login = function(email, password)
{
// we directly return $http as $http is a promise.
return $http({
url: 'user/authenticate',
method: "POST",
data: { 'email' : email, 'password' : password }
});
}
将承诺响应管理到您的控制器
// manage the promise return with .then(function() and the response with the parameter of the function
loginService.login(data.email, data.password).then(function(loginResult){
if (loginResult)
{
$modalInstance.close("");
$state.go("home");
}
else
{
$scope.error = "Login not found.";
}
});