2016-07-21 171 views
0

林存储在一个变量的布尔值来检查,如果用户是管理员或不是,在我的功能,我称之为我可以接受的结果值(true或false)的服务,但比变量vm.isAdmin即时通讯未定义。功能服务返回undefined

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

回答

1

UserService.isAccount回报的承诺,你在随后的方法设置匿名函数使用它,但你的主要功能是不是在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 
    }); 
+0

我已经做到了,但还是给了我一个“C {$$状态:对象}” – Pedro

+0

你将永远不会得到布尔,布尔可在功能将承诺后,被称为分配。无极是异步的,必须uderstand异步函数线,他们在代码不调用,它运行后,在同一范围内的一些时间。检查我的代码并尝试。 –

1

UserService.isAccount似乎返回一个承诺,所以你必须使用这种方式:

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

所以,当它的可用的结果分配。