2

Я пробовал следующие учебные пособия, а также рассматривал другие вопросы о стеке, но я не могу понять, что я делаю неправильно.

Я построил это с помощью ионного создателя, и теперь я пытаюсь войти в Google для входа в Google и после этого полного маршрута на свою панель инструментов.

Извините, это все совершенно новое для меня. Если вы можете объяснить, что я делаю неправильно, и почему это так, я могу научиться. Благодаря!

Мои controller.js:

angular.module('app.controllers', []) 

.controller('loginCtrl', ['$scope', '$stateParams', // The following is the constructor function for this page's controller. See https://docs.angularjs.org/guide/controller 
// You can include any angular dependencies as parameters for this function 
// TIP: Access Route Parameters for your page via $stateParams.parameterName 
function ($scope, $stateParams, $urlRouterProvider) { 

    $scope.googlelogin = function(){ 
     //alert('yup'); 
     var provider = new firebase.auth.GoogleAuthProvider(); 
     provider.addScope('https://www.googleapis.com/auth/plus.login'); 
     firebase.auth().signInWithPopup(provider).then(function(results){ 
      // This gives you a Google Access Token. You can use it to access the Google API. 
      var token = results.credential.accessToken; 
      // The signed-in user info. 
      var user = results.user; 
      console.log(user); 

      $urlRouterProvider.otherwise('/dashboard'); 
      //window.location.href = "dashboard.html"; 
     }); 
    } 
}]) 

Мой login.html:

<ion-view title="Login" hide-nav-bar="true" id="page4"> 
    <ion-content padding="true" class="manual-ios-statusbar-padding"> 
     <form id="login-form1" class="list"> 
      <div class="spacer" style="width: 300px; height: 40px;"></div> 
      <div> 
       <img src="img/7TKZQZBSSg62UJQB4zyu_logo.png" width="30%" height="auto" style="display: block; margin-left: auto; margin-right: auto;"> 
      </div> 
      <div class="spacer" style="width: 300px; height: 100px;"></div> 
      <a id="login-button1" class="button button-stable button-block" ng-click="googlelogin()">Google Login</a> 
      <button id="login-button3" class="button button-stable button-block">Facebook Login</button> 
     </form> 
    </ion-content> 
</ion-view> 

Routes.js:

angular.module('app.routes', []) 

.config(function($stateProvider, $urlRouterProvider) { 

    // Ionic uses AngularUI Router which uses the concept of states 
    // Learn more here: https://github.com/angular-ui/ui-router 
    // Set up the various states which the app can be in. 
    // Each state's controller can be found in controllers.js 
    $stateProvider 



    .state('menu.dashboard', { 
     url: '/dashboard', 
     views: { 
      'side-menu21': { 
       templateUrl: 'templates/dashboard.html', 
       controller: 'dashboardCtrl' 
      } 
     } 
    }) 

    .state('login', { 
     url: '/login', 
     templateUrl: 'templates/login.html', 
     controller: 'loginCtrl' 
    }) 

$urlRouterProvider.otherwise('/side-menu21/dashboard') 
}); 

ответ

1

ваши JS должны быть, как это

angular.module('app.controllers', []) 

    .controller('loginCtrl', ['$scope', '$stateParams', '$state','$location', 
    function ($scope, $stateParams,$state,$location, $urlRouterProvider) { 

     $scope.googlelogin = function(){ 

      var provider = new firebase.auth.GoogleAuthProvider(); 
      provider.addScope('https://www.googleapis.com/auth/plus.login'); 
      firebase.auth().signInWithPopup(provider).then(function(results){ 

       var token = results.credential.accessToken; 

       var user = results.user; 
       console.log(user); 

       $state.go('menu.dashboard'); 

//or you may use location like below 
//$location.path('/dashboard'); 
       }); 
      } 
     }]) 
+0

Когда я пытаюсь это сделать, я получаю сообщение об ошибке: Uncaught Error: Не удалось выполнить res olve '/ dashboard' from state 'login' (...) –

+1

Фактически его $ state.go ('menu.dashboard'). Это исправило это. Спасибо! –

+0

Я отредактировал ответ, чтобы показать 'menu.dashboard'. –

1

Вы должны использовать $state.go('menu.dashboard'); не $urlRouterProvider.otherwise('/dashboard'); Ионные использует угловой ui router, вы можете узнать больше об этом здесь: https://github.com/angular-ui/ui-router

+0

Ошибка: Uncaught TypeError: $ scope.go не является функцией (...) –

+0

argh, извините, это $ state.go not $ scope.go. Я сплю здесь: не забудьте ввести $ state – iCediCe

+0

. Посмотрите решение ниже, я получаю сообщение об ошибке: Не удалось Ошибка: не удалось разрешить '/ dashboard' из состояния 'login' (...) –

0

Вы можете использовать $ услугу определения местоположения, как показано ниже,

angular.module('app.controllers', []) 
.controller('loginCtrl', ['$scope', '$stateParams', '$state','$location', 
    function ($scope, $stateParams,$state,$location, $urlRouterProvider) { 
     $scope.googlelogin = function(){ 
      var provider = new firebase.auth.GoogleAuthProvider(); 
      provider.addScope('https://www.googleapis.com/auth/plus.login'); 
      firebase.auth().signInWithPopup(provider).then(function(results){ 
       var token = results.credential.accessToken; 
       var user = results.user; 
       console.log(user); 
       $location.path('dashboard'); 
      }); 
     } 
    }])