Angularjs 函数服务返回未定义
我在变量中存储一个布尔值以检查用户是否为管理员,在我调用服务的函数中,我可以接收结果值(true或false),但在变量vm.isAdmin中,我得到一个未定义的值Angularjs 函数服务返回未定义,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我在变量中存储一个布尔值以检查用户是否为管理员,在我调用服务的函数中,我可以接收结果值(true或false),但在变量vm.isAdmin中,我得到一个未定义的值 vm.isAdmin = accountType("admin"); function accountType(type){ UserService.isAccount(type).then( function (result) { console.log("result");
vm.isAdmin = accountType("admin");
function accountType(type){
UserService.isAccount(type).then(
function (result) {
console.log("result");
console.log(result);
return result;
}
);
}
UserService.isAccount返回承诺,您可以通过在then方法中设置匿名函数来使用它,但您的主函数不同,accountType函数中使用的匿名函数被称为异步函数,因此结果将在函数accountType结束后很久。accountType函数也应该返回promise或使用回调函数 尝试这样做(回调函数): 用法示例:
accountType("admin",function(){
//code for yes
},function(){
// code for no
});
UserService.isAccount返回承诺,您可以通过在then方法中设置匿名函数来使用它,但您的主函数不同,accountType函数中使用的匿名函数被称为异步函数,因此结果将在函数accountType结束后很久。accountType函数也应该返回promise或使用回调函数 尝试这样做(回调函数): 用法示例:
accountType("admin",function(){
//code for yes
},function(){
// code for no
});
UserService.isAccount
似乎返回了一个承诺,因此您必须这样使用它:
UserService.isAccount('admin')
.then(function (result) {
vm.isAdmin = result;
});
因此,结果在可用时被分配。
UserService.isAccount
似乎返回一个承诺,因此您必须这样使用它:
UserService.isAccount('admin')
.then(function (result) {
vm.isAdmin = result;
});
因此,结果在可用时被赋值。我已经做了,但仍然给我一个“c{$$state:Object}”,你永远不会得到布尔值,布尔值可以在函数中赋值,函数将在promise之后调用。Promise是异步的,您必须理解异步函数不会在代码中的行中调用,它会在相同的范围内运行一段时间。检查我的代码并尝试它。我已经做了,但仍然给我一个“c{$$state:Object}”,你永远不会得到布尔值,布尔值可以在函数中赋值,该函数将在promise之后调用。Promise是异步的,您必须理解异步函数不会在代码中的行中调用,它会在相同的范围内运行一段时间。检查我的代码并尝试它。