Angular返回服务中的promise对象。尝试访问值以更改ng-if指令

时间:2017-04-07 19:00:20

标签: javascript angularjs express promise

我见过类似的问题,但希望有人可以给我一些帮助。

我正在尝试验证用户是否已登录并修改html以进行登录或注销按钮。

this.getUser = function(){
 return $http.get('/api/user');
};

服务

vm.user = function() { 
  dataService.getUser().then(function(res){
    if(res.data.userId.length){
      return true;
    }else{
      return false;
    }
  });
}

控制器

<li class="nav-item" ng-hide='vm.user()'>
        <a class="nav-link" href="/api/signin">Sign in</a>
</li>

我尝试了不同的变化无济于事。我要么返回一个promise对象,要么不能在promise之外使用变量。感谢

1 个答案:

答案 0 :(得分:1)

只需使用变量而不是在ng-hide指令中观察整个函数。请找到代码段。

控制器文件:

vm.flags = {};
vm.user = function() { 
  dataService.getUser().then(function(res){
    if(res.data.userId.length){
      vm.flags.isUserLoggedIn = true;
    }else{
      vm.flags.isUserLoggedIn = false;
    }
  });
}

Html文件

<li class="nav-item" ng-hide='vm.flags.isUserLoggedIn'>
        <a class="nav-link" href="/api/signin">Sign in</a>
</li>