我有2个factory
个功能:
工厂
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;
在我的控制器中我会期望是真还是假(用户是超级管理员还是没有),但结果一无所获。如果我在factory.isSuperadministrator中的console.log,则结果为true。
控制器
console.log(employeeFactory.isSuperadministrator());
为什么这不起作用?
答案 0 :(得分:4)
错过了factory.getCurrEmployee
函数中factory.isSuperadministrator
的承诺。此外,我进行了小型重构,使您的代码更加智能。
factory.isSuperadministrator = function() {
return factory.getCurrEmployee().then(function (employee) {
return employee.Role == 'Superadministrator';
});
}
但是上面的内容并没有解决你的问题,它只会print
承诺console
中的对象。为了进一步解决您的问题,您需要将.then
函数与employeeFactory.isSuperadministrator()
返回的承诺进行回调,如下所示
<强>控制器强>
employeeFactory.isSuperadministrator().then(function(data){
console.log(res);
});
请遵循this answer
中所述的相同指南答案 1 :(得分:0)
尝试
employeeFactory.isSuperadministrator().then(function(res){
console.log(res);
});