函数服务返回undefined

时间:2016-07-21 09:29:29

标签: angularjs angularjs-directive angularjs-scope

我在变量中存储一个布尔值以检查用户是否是管理员,在我调用服务的函数中我可以接收结果值(true或false),但是在变量vm.isAdmin im中得到一个未定义的。

vm.isAdmin = accountType("admin");
function accountType(type){
    UserService.isAccount(type).then(
        function (result) {
           console.log("result");
           console.log(result);
           return result;
        }
    );
}

2 个答案:

答案 0 :(得分:1)

UserService.isAccount返回promise并通过在then方法中设置匿名函数来使用它,但是你的main函数不一样,在accountType函数中使用的匿名函数被称为异步,所以在你的函数accountType结束之后结果会很多。您的accountType函数也应该返回promise或使用回调函数。

尝试这种方式(回调函数):

       function accountType(type,funcYes,funcNo){

            UserService.isAccount(type).then(
                function (result) {

                  if (result===type)//change this if
                  funcYes();
                  else
                      funcNo();

                }
            );
        }

示例用法:

   accountType("admin",function(){ 
   //code for yes  
   },function(){  
   // code for no
   });

答案 1 :(得分:1)

UserService.isAccount似乎会返回一个承诺,所以你必须这样使用它:

UserService.isAccount('admin')
.then(function (result) {
        vm.isAdmin = result;
    });

因此,结果在可用时分配。