У меня есть 2 factory
функции:AngularJs пустой результат
Фабрики
factory.getCurrEmployee = function()
{
data = {"api_token": authenticationFactory.getToken()};
url = GLOBALS.url + 'show/employee/' + $cookieStore.get('employeeid');
return requestFactory.post(url, data)
.then(function (response) {
return response.data.result.Employee;
}, function() {
$window.location.assign('/');
});
}
factory.isSuperadministrator = function() {
factory.getCurrEmployee().then(function (employee) {
if(employee.Role == 'Superadministrator')
{
return true; //console.log('Superadministrator') <- that console.log is visible in my console
}
return false;
});
}
return factory;
В мой контроллер я бы ожидать, истинным или ложным (пользователь является Superadministrator или нет), но результат ничего. Если я console.log на моем factory.isSuperadministrator, результат будет правдой.
Контроллер
console.log(employeeFactory.isSuperadministrator());
Почему это не работает?
Его асинхронный. Ваше возвращение обещает не значение bool. – ste2425
@ ste2425 эти значения 'Boolean' никогда не будут возвращаться до тех пор, пока обещание не вернется. потому что 'boolean' вернулся из функции обратного вызова. –
@PankajParkar Да, но тот факт, что OP не использует '.then' в своем коде контроллера вызова, но возвращает ожидаемое значение в обратном вызове службы, показывает недостаточную осведомленность о том, как работает цепочка привязок. Вот почему я сказал, что он возвращает обещание, а не ценность в его обратном вызове. – ste2425