2016-04-12 11 views
0

私のAndroid携帯でイオンアプリをテストしています。私はユーザーのセッションをチェックするためにrootScope関数を使用しています。この関数はクロムデバッグコンソールのTypeErrorを表示します( "TypeError:$ rootScope.checkSessionは関数ではありません")。 http://www.raymondcamden.com/2014/08/16/Ionic-and-Cordovas-DeviceReady-My-Solution/ しかし、私は静かなコンセプトを得ることはありませんでした。もしあなたがお付き合いすることができれば嬉しいです。ありがとう!ここで.runモジュール内のrootScope機能が認識されません。

は私のコードです:

forkapp.run(function($ionicPlatform, $rootScope, $firebaseAuth, $firebase, $window, $ionicLoading) { 
    $ionicPlatform.ready(function() { 
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
    // for form inputs) 
    var fb = new Firebase("https://glowing-torch-9862.firebaseio.com/"); 
    if (window.cordova && window.cordova.plugins.Keyboard) { 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
    } 
    if (window.StatusBar) { 
     StatusBar.styleDefault(); 
    } 

    $rootScope.userEmail = null; 
    $rootScope.baseUrl = 'https://glowing-torch-9862.firebaseio.com/'; 

    var authRef = new Firebase($rootScope.baseUrl); 
    $rootScope.auth = $firebaseAuth(authRef); 

    $rootScope.show = function(text) { 
     $rootScope.loading = $ionicLoading.show({ 
     content: text ? text : 'Loading..', 
     animation: 'fade-in', 
     showBackdrop: true, 
     maxWidth: 200, 
     showDelay: 0 
     }); 
    }; 

    $rootScope.hide = function() { 
     $ionicLoading.hide(); 
    }; 

    $rootScope.notify = function(text) { 
     $rootScope.show(text); 
     $window.setTimeout(function() { 
     $rootScope.hide(); 
     }, 1999); 
    }; 

    $rootScope.logout = function() { 
     $rootScope.auth.$logout(); 
     $rootScope.checkSession(); 
    }; 

    $rootScope.checkSession = function() { 
     var auth = new FirebaseSimpleLogin(authRef, function(error, user) { 
     if (error) { 
      // no action yet.. redirect to default route 
      $rootScope.userEmail = null; 
      $window.location.href = '#/auth/signin'; 
     } else if (user) { 
      // user authenticated with Firebase 
      $rootScope.userEmail = user.email; 
      $window.location.href = ('#/event'); 
     } else { 
      // user is logged out 
      $rootScope.userEmail = null; 
      $window.location.href = '#/auth/signin'; 
     } 
     }); 
    }; 
    }); //ionic platform ready 
    }) 
+0

の外の他の$ rootScope機能があるだろう。 – Daniel

答えて

0

ionicPlatform.readyイベントにあなたのコードが実行されるとときコルドバのdevicereadyイベントが発生する、すなわち、コルドバのデバイスAPIがロードされ、アクセスする準備が整いました後$rootScope.checkSession関数は、定義されます。

一般的に、ionicPlatform.readyは、window.readyと同じです。ブラウザでイオンアプリを実行していて、コードが動作する場合です。モバイルデバイスでアプリを実行している場合は、ionicPlatform.readyイベントが発生するまでに時間がかかることがあります。 $rootScope.checkSessionionicPlatform.readyに定義しているので、その関数をデバイスイベントの後に呼び出す必要があります。が定義される前に、 `` logout`に使用される。

簡単な解決策は、$rootScope.checkSessionを定義し、 `$ rootScope.checkSessionは()ためionicPlatform.ready

関連する問題