如何解决firebase $ waitForAuth()。然后做一些事情

时间:2016-01-07 02:11:35

标签: angularjs firebase angularfire

在我的应用中,我想在首页加载之前解决一些问题。在我的其他页面上,我很容易,因为我在我的决心中使用此功能:

userAccount.$inject = ['userService','authService'];
function userAccount(userService, authService) {
  return authService.firebaseAuthObject.$requireAuth()
    .then(function(response) {
      return userService.getAccount(response.uid).$loaded();
    });
}

它需要授权,一旦提交了promise,它就会获取firebase中保存的其他用户数据。如果承诺被撤销,它将不会加载该页面。

但是在主页上我想检查用户是否已登录,如果用户已登录,请抓取用户数据并转到页面。但是如果用户没有登录,仍然只是用户数据将为空页面。

我目前正在使用它来检查Auth:

checkAuth.$inject = ['userService', 'authService'];
function checkAuth(userService, authService) {
  return authService.firebaseAuthObject.$waitForAuth()
}

哪个有效,但我仍然想在用户登录之前加载页面之前解析用户数据。

我认为这是我的答案:

checkAuth.$inject = ['userService','authService'];
function checkAuth(userService, authService) {
  return authService.firebaseAuthObject.$waitForAuth()
    .then(function(response) {
      return checkAuth.getAccount(response.uid).$loaded();
    });
}

哪会等待承诺然后加载用户数据,但遗憾的是这不起作用。

有关如何在$ waitforauth()函数运行后检索用户数据的任何想法,关键是我想在页面加载之前解析这些数据。

谢谢你们

我的状态也不起作用:

    .state('home', {
    url: '/',
    templateUrl: '/views/main.html',
    controller: 'MainCtrl as vm',
    resolve: {
      checkAuth: checkAuth,
      userAccount: function(checkAuth){
        console.log(checkAuth);
        if(checkAuth){
          // grab user data
        } else {
          return false;
        }

      }
    }
  })

1 个答案:

答案 0 :(得分:2)

这让我完成了。

州:

userAccountMain.$inject = ['userService', 'authService'];
function userAccountMain(userService, authService) {
  return authService.firebaseAuthObject.$waitForAuth()
    .then(function(response){
      if(response){
        return userService.getAccount(response.uid).$loaded();
      } else {
        return false;
      }
    });
}

功能:

java.lang.ArrayIndexOutOfBoundsException: -1
    at WordLengths.countWordLengthsWithIsLettermethod(WordLengths.java:126)
    at WordLengths.testWordLengths(WordLengths.java:152)