【问题标题】:Angular returning promise object from service. Trying to access value to change ng-if directiveAngular 从服务返回承诺对象。尝试访问值以更改 ng-if 指令
【发布时间】:2017-04-07 19:00:19
【问题描述】:

我遇到过类似的问题,但希望有人能给我一些帮助。

我正在尝试验证用户是否已登录并修改 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 之外使用该变量。谢谢

【问题讨论】:

  • 你需要返回dataService.getUser().then..也喜欢return dataService.getUser().then...

标签: javascript angularjs express promise


【解决方案1】:

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

控制器文件:

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2015-12-02
    • 1970-01-01
    • 2014-02-01
    • 2018-03-15
    相关资源
    最近更新 更多