2016-06-14 23 views
0

私はAngularJS /イオンとの初心者です、と次のコードに問題が直面していますから、コントローラを起動することができません:私は、コード内のコメントで述べたようにAngularJS:約束

.controller('myCtrl', function ($scope, $http, $ionicPopover, $state, $cordovaOauth){ 

//The following is used in the ng-click of a button 
$scope.doAction = function() { 
    $cordovaOauth.google("xxxxxx.apps.googleusercontent.com", ["email"]).then(function (result) { 
     // results 
     alert(JSON.stringify(result)); 
     $scope.google_access_token = result.access_token; 

     var http = $http({ 
      url: 'https://www.googleapis.com/oauth2/v3/userinfo', 
      method: 'GET', 
      params: { 
       access_token: result.access_token 
      } 
     }); 
     http.then(function (data) { 
      var user_data = data.data; 
      //The code is reaching here, as the alert is successfully shown with data 
      alert("Name: " + user_data.name + "\nEmail: " + user_data.email 
       +"\nPicture:" + user_data.picture); 
      userInfo.fullName = user_data.name; 
      userInfo.userId = user_data.email; 
      userInfo.img = user_data.picture; 
      localStorage.setItem('loggedInUser', user_data.email); 
      //But this is not taking me to the other controller 
      $state.go('tabsController.someOtherController'); 
     }); 

    }, function (error) { 
     // error 
     alert(error); 
    }); 
    } 

} 

を、実行はhttp.thenの内部に達しますが、$ state.goを持つ他のコントローラを呼び出すことはありません。私がdoAction()の前に配置すると、呼び出されています。つまり、コントローラ自体に何も問題はありません。誰かが私がここで間違っていることを特定するのに役立つことができますか?

+0

がどのようにapp.js.であなたのルートを定義します。この宣言

.run(function($stateProvider, $urlRouterProvider){ $stateProvider .state('home', { ... }) .state('main', { abstract: true, ... }) .state('main.first', { controller: 'firstCtrl' }) .state('main.second', { controller: 'secondCtrl' }); }); 

これらが有効であるために

$ state.go( 'tabsController.someOtherController'); 'tabsController.someOtherContorller'状態になります。 – mtamma

+0

.state( 'tabsController.someOtherController'、{ URL: '/他の何らかの' ビュー:{ 'TAB1':{ templateUrl: 'テンプレート/ someOtherPage.html' コントローラ 'SomeOtherCtrl' }} –

+0

はい、表示されています –

答えて

0

コントローラはNOT州です。それらはapp.jsファイルのrun句で定義されています。

$state.goを使用する場合は、runで定義されているように、という名前をと指定する必要があります。

例:

$state.go('home'); 
$state.go('main.first'); 
$state.go('main.second'); 
+0

@ muli-yulzari - 私はすでにそれを持っています。だから、もし私がcordovaOuth.googleを作る前に$ state.goコールを置くとうまくいきます。 –