Перенаправление при входе в систему с помощью аутентификации Firebase и AngularFire

#angularjs #firebase #angular-ui-router #firebase-authentication #angularfire

#angularjs #firebase #angular-ui-router #firebase-аутентификация #angularfire

Вопрос:

Проблема: при входе в систему я хотел бы перенаправить пользователя на новую страницу. Я пытаюсь перейти $state к своему контроллеру, поэтому я могу это сделать $state.go() , но я получаю сообщение об ошибке Cannot read property 'go' of undefined .

Я использую логин Firebase с электронной почтой и паролем, Angular 1.5.8, ui-router и AngularFire.

Завод

 app.factory("Auth", ["$firebaseAuth",
  function($firebaseAuth) {
    return $firebaseAuth();
  }
]);
  

Контроллер

 app.controller("AuthCtrl", ["$scope", "Auth", "$rootScope", '$state',
  function($scope, Auth, $firebaseArray, $rootScope, $state) {
    $scope.auth = Auth;

    $scope.createUser = function() {
      $scope.message = null;
      $scope.error = null;

      // Create a new user
      Auth.$createUserWithEmailAndPassword($scope.email, $scope.password, $scope.name)
        .then(function(firebaseUser) {
          $scope.message = "User created with uid: "   firebaseUser.uid;
          const uid = firebaseUser.uid;
          const dbref = firebase.database().ref().child('users/' uid);
          const userInst = {}
          dbref.update({id:uid, info: {name: $scope.name}});
        }).catch(function(error) {
          $scope.error = error;
        });
    };
  $scope.signIn = function(){
    Auth.$signInWithEmailAndPassword($scope.email, $scope.password).then(function(firebaseUser){
      console.log(firebaseUser.uid);
      $state.go('dashboard')
    })
    .catch(function(error) {

      var errorCode = error.code;
      var errorMessage = error.message;
    });
  }
    $scope.deleteUser = function() {
      $scope.message = null;
      $scope.error = null;

      $scope.auth.$onAuthStateChanged(function(firebaseUser) {
      $scope.firebaseUser = firebaseUser;
    });

      // Delete the currently signed-in user
      Auth.$deleteUser().then(function() {
        $scope.message = "User deleted";
      }).catch(function(error) {
        $scope.error = error;
      });
    };
  }
]);
  

Ответ №1:

$firebaseArray отсутствует. Внедрить зависимость $firebaseArray в контроллер.

 app.controller("AuthCtrl", ["$scope", "Auth", "$firebaseArray","$rootScope", '$state',
  function($scope, Auth, $firebaseArray, $rootScope, $state) {

   // CODE   

  }
]);