0

У меня есть служба проверки подлинности пользователя для перенаправления на логин или зарегистрированную область.Угловое обслуживание не инициализируется

services.js:

var servicesModule = angular.module('servicesModule', []); 

servicesModule.service('loginService', ['$state', function($state){ 

    console.log('Inside'); 

    var ref = new Firebase("https://feedback-system.firebaseio.com/"); 
    var authData = ref.getAuth(); 

    console.log('Inside'); 

    if (authData) { 


     $state.go('tabs.courses'); 
     console.log("User " + authData.uid + " is logged in with " + authData.provider); 

    } else { 

     $state.go('login'); 
    } 

}]); 

Контроллер:

var ionicApp = angular.module('feedback-system', ['ionic', 'firebase', 'servicesModule', 'coursesModule', 'feedbackModule', 'loginModule', 'tabsModule']); 

ionicApp.run(function($ionicPlatform, $state) { 
    $ionicPlatform.ready(function() { 
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
    // for form inputs) 
    if(window.cordova && window.cordova.plugins.Keyboard) { 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
    } 
    if(window.StatusBar) { 
     StatusBar.styleDefault(); 
    } 
    }); 
}); 

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

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

    .state('tabs', { 
    url: '/tabs', 
    abstract: true, 
    templateUrl: 'views/main.html', 
    controller: 'tabsCtrl' 
    }) 

    .state('tabs.courses', { 
    url: '/courses', 
    views:{ 
     'coursesView':{  
     templateUrl: 'views/courses.html', 
     controller: 'coursesCtrl' 
     } 
    } 
    }) 

    .state('tabs.feedback', { 
    url: '/feedback', 
    views:{ 
     'feedbackView':{ 
     templateUrl: 'views/feedback.html', 
     controller: 'feedbackCtrl' 
     } 
    } 
    }) 

    .state('tabs.notifications', { 
    url: '/notifications', 
    views:{ 
     'notificationsView':{ 
     templateUrl: 'views/notification.html', 
     controller: 'notificationCtrl' 
     } 
    } 
    }); 

    $urlRouterProvider.otherwise("/courses"); 
}); 

index.html:

<!DOCTYPE html> 
<html ng-app="feedback-system"> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <title></title> 

    <link href="lib/ionic/css/ionic.css" rel="stylesheet"> 
    <link href="css/style.css" rel="stylesheet"> 

    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above 
    <link href="css/ionic.app.css" rel="stylesheet"> 
    --> 

    <!-- ionic/angularjs js --> 
    <script src="lib/ionic/js/ionic.bundle.js"></script> 

    <!-- cordova script (this will be a 404 during development) --> 
    <script src="lib/ngcordova/dist/ng-cordova.js"></script> 
    <script src="cordova.js"></script> 

    <!-- Firebase --> 

    <script src="https://cdn.firebase.com/js/client/2.2.7/firebase.js"></script> 
    <script src="lib/angularfire.min.js"></script> 

    <!-- Services --> 

    <script src="js/services/services.js"></script> 

    <!-- Controllers --> 

    <script src="js/controllers/loginCtrl.js"></script> 
    <script src="js/controllers/coursesCtrl.js"></script> 
    <script src="js/controllers/feedbackCtrl.js"></script> 
    <script src="js/controllers/tabsCtrl.js"></script> 

    <!-- Application --> 

    <script src="js/app.js"></script> 

    </head> 
    <body> 
    <ion-nav-view></ion-nav-view>  
    </body> 
</html> 

Я впрыскиванием в app.js основного модуля и index.html, ошибки вообще нет, но ничего не происходит, ничего не записывая в консоли. Любая идея, почему этот servies.js не выполняется?

Update:

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

ответ

0

ли это,

var servicesModule = angular.module('servicesModule', []); 

servicesModule.service('loginService', ['$state', '$firebaseAuth', '$firebase', function($state,$firebaseAuth ,$firebase){ 

return function() { 
    console.log('Inside'); 

    var ref = new Firebase("https://feedback-system.firebaseio.com/"); 
    var authData = $firebaseAuth(ref); 

    console.log('Inside'); 

    if (authData) { 


     $state.go('tabs.courses'); 
     console.log("User " + authData.uid + " is logged in with " + authData.provider); 

    } else { 

     $state.go('login'); 
    } 
} 
}]); 

Вводят $firebaseAuth и $firebase и попробовать. Также вы можете показать контроллер и как вы вводите эту службу в index.html?

+0

я не добавить контроллер, поскольку его немного долго и не думали, что WUD необходимо с, что, так как сервис Шуд просто выполнить по крайней мере один раз, когда запускается приложение, я буду попробовать решение u предложил, но моя точка была даже первой линией console.log не запускается, поэтому означает, что сервис просто не отображается. –

+0

Конечно, попробуйте ввести «$ firebaseAuth» и «$ firebase», как указано выше. О, я не понял одной фундаментальной вещи, вам нужно вернуть что-то из службы, это цель и дизайн в целом! Я должен изменить свой ответ –

+0

. Целью службы является выполнение чего-либо перед тем, как вы перейдете к вашему представлению, и одним из способов использования этого является получение некоторых данных, готовых для использования контроллером. Я успешно запускаю эту службу до того, как она сейчас появилась, она просто перестала работать сегодня. –

1

Я думаю, что ваша служебная декларация пошла не так. оберните содержимое внутри службы в функциональный блок возврата.

servicesModule.service('loginService', ['$state', function($state){ 

    return function() { 
     console.log('Inside'); 

     var ref = new Firebase("https://feedback-system.firebaseio.com/"); 
     var authData = ref.getAuth(); 

     console.log('Inside'); 

     if (authData) { 


      $state.go('tabs.courses'); 
      console.log("User " + authData.uid + " is logged in with " + authData.provider); 

     } else { 

      $state.go('login'); 
     } 
    } 

}]); 

контроллер

servicesModule.controller('loginController', ['$scope', 'loginService', function($scope, loginService){ 

     loginService(); 

}]); 
+0

u не возвращайте функция в обслуживании, фабрика используется для этого, я думаю, исправьте меня, если я ошибаюсь –

+0

@Faizan, фабрика возвращает все, что вы хотите (массив, функция, простой объект, строка). Служба возвращает функцию 'new''ed. Этот ответ правильный. –

Смежные вопросы