AngularJs空结果

时间:2016-03-24 15:23:27

标签: javascript angularjs promise angular-promise angularjs-http

我有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());

为什么这不起作用?

2 个答案:

答案 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);
});