Я использую заводской рецепт для вызова метода от контроллера, вот заводское определение.Заводской метод, возвращающий неопределенное значение
app.factory('AccountService', function ($http){
var factory = {};
factory.getAuthenticate = function (credentials) {
$http({
method: 'post',
url: '/api/login',
data: credentials
}).success(function (data, status, headers, config){
return true;
}).error(function (data, status, headers, config){
return false;
});
}
return factory;
});
Когда я вызываю метод getAuthenticate от одного моего контроллера,
app.controller('DefaultController', function ($scope, $location, AccountService){
$scope.login = function(){
alert(AccountService.getAuthenticate($scope.credentials));
// if(AccountService.getAuthenticate($scope.credentials)) {
// $location.path('/dashboard');
// }
}
});
Он всегда возвращает неопределенное значение, а не истинным или ложным на основе HTTP вызовов. Любая идея, что мне не хватает?
вашей функция оленьей кожи ничего возвращать на один, второй вы делаете asyc звонков так что ваша функция будет возвращать, прежде чем запрос Аякса является done –
Возможный дубликат [Как вернуть ответ от вызова Ajax?] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) –
As Патрик говорит, что функция async не вернет такое значение, либо вернет обещание, либо воспользуется обратным вызовом. –