Tengo un loginController.js, loginService.js, app.js y una página de visualización

app.js

var validation = angular.module('validationApp', ['ui.router','ngDialog','ngSanitize','angularSpinner']);
validation.config(function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('/login');
    $stateProvider
    .state('login', {
        url : '/login',
        views: {
            "mainView": {
               controller: 'loginController',
               templateUrl: '/public/app/login/loginView.phtml'
            },
        }
    }).run(['$rootScope', '$location', '$http', function ($rootScope, $location, $http) {
    
    $rootScope.globals = JSON.parse(localStorage.getItem('globals')) || {};
    if ($rootScope.globals.currentUser) {
        $http.defaults.headers.common['Authorization'] = 'Basic ' + $rootScope.globals.currentUser.authdata;
    }
    $rootScope.$on('$locationChangeStart', function (event, next, current) {

        var loggedIn = $rootScope.globals.currentUser;
        if (!loggedIn) {
            $location.path('/login');
        } else if (loggedIn && $location.path() == '/login') {
            $location.path('/validation');
        }
    });
    
}]);

loginService.js

app.factory('loginService', ['$http', '$rootScope', function ($http, $rootScope) {
    var service = {};
    
    service.Login            = Login;
    service.SetCredentials   = SetCredentials;
    service.ClearCredentials = ClearCredentials;

    return service;
  function Login(user, callback)
    {
        var request = $http({
            method  : "post",
            url     : "/app/index/login",
            data    : {
                        userEmail: user.userEmail,
                        password: user.password
                      }
        }).success(function (response, status, headers, config) {
            callback(response);
        });
    };

loginController.js

validation.controller('loginController',['$scope','$http', '$location','loginService',function($scope,$http,$location,loginService) {
			
    
        $scope.submitForm = function(user) {

        $http({
            method: 'post',
            url: '/index.php/home/create',
            data: {
                username:$scope.user.userName,
                password:$scope.user.password,
            },
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
		}).success(function(response){
                     loginService.SetCredentials(response.userData);
                    ..............................

Mientras ejecuto mi código obtengo un error como:

1.app no ​​está definida en loginService.js

2.Error: $ injector: unpr Proveedor desconocido Proveedor desconocido: loginServiceProvider <- loginService <- loginController

Soy nueva en angularjs.so por favor ayúdame a resolver esto.

1
User09111993 5 ene. 2017 a las 10:24

4 respuestas

La mejor respuesta

Un enfoque más sofisticado sería obtener la ngApp en cada archivo. Esto elimina los problemas que tiene en este momento al no hacer referencia a la variable global correcta ('no contamine el alcance global' es una declaración que quizás desee considerar también).

angular.module('validationApp').controller(...)

O

angular.module('validationApp').factory(...)
3
Tobi 5 ene. 2017 a las 07:29

1.app no ​​está definida en loginService.js

Exactamente lo que dice, está utilizando la variable de la aplicación, pero no está definida en loginService (o en ninguno de los otros archivos js).

Reemplace lo siguiente en loginService.js

app.factory

Con

angular.module('validationApp').factory

2.Error: $ injector: unpr Proveedor desconocido Proveedor desconocido: loginServiceProvider <- loginService <- loginController

Este error se debe al error que cometió en loginService.js

1
Giovani Vercauteren 5 ene. 2017 a las 07:31

Debe reemplazar validation.factory en lugar de app.factory

0
Sathish Kumar 5 ene. 2017 a las 07:29

Cambio

DE

app.factory('loginService', ['$http', '$rootScope', function ($http, $rootScope) {

TO

validation.factory('loginService', ['$http', '$rootScope', function ($http, $rootScope) {
1
Sajeetharan 5 ene. 2017 a las 07:29