2016-04-19 20 views
0

これで、ユーザーがサインインした後で(つまり、onLogin関数を実行した後で)NavCtrlにオブジェクト($ rootScope.User)を取得しようとしています。

しかし、私は何か間違っていると私はそれを修正する方法を見つけることができません。私はそれが価値を得る前にコードを読んでいるかもしれないと思います。しかし、私は本当にわからない。もし誰かが私を助けてくれるなら、それは素晴らしいだろう!

ありがとうございます!

.controller('LoginCtrl', function (Backand, $state, $rootScope, LoginService, $ionicPopup, dataService) { 

    var login = this; 
    $rootScope.isLoggedin = null; 

    function signin() { 
     LoginService.signin(login.email, login.password) 
      .then(function() { 
      onLogin(); 
     }, function (error) { 
      console.log(error); 

      $rootScope.showAlert = function() { 
      var alertPopup = $ionicPopup.alert({ 
       title: 'Login Error', 
       template: error.error_description 
       }); 
      }; 

      $rootScope.showAlert(); 
     }); 
    } 

    function onLogin() { 
     $rootScope.$broadcast('authorized'); 
     $state.go('tabs.feed'); 
     login.username = Backand.getUsername(); 
     $rootScope.isLoggedin = true; 

     $rootScope.cUser = Backand.getUserDetails().$$state.value; 
     console.log($rootScope.cUser); 
    } 
}); 

.controller('NavCtrl', function($scope, $rootScope, Backand, dataService) { 

    function getUser() { 
     $scope.user = $rootScope.cUser; 
     console.log($scope.user); 
    } 

    getUser(); 
}); 

答えて

1

は、あなたが探し答えであるが、グローバルを保存するために

$rootScopeの使用は避けないかもしれませんんconsole.log($rootScope.User);

OR上記cUser 1行からcを削除するサービスを使用します注入する。

.factory('UserService', function() { 
    return { 
     user : {name:'anonymous'} 
    }; 
}); 

コントローラに:あなたがこれを行うと

.controller('NavCtrl', function($scope, UserService, Backand, dataService) { 
    $scope.user = UserService.user; 
} 
0

これはタイプミスです。この

console.log($rootScope.cUser); 
+0

質問を投稿した後、私は実際にそのタイプミスを修正しましたが、まだ動作していません... –

0

$state.go('tabs.feed')tabs.feedがNavCtrlを呼び出している可能性はありますか?そうであれば、値を設定する前にそれを読んでいます。