2015-06-19 3 views
0

Процесс входа пользователя в мое приложение работает. Он подключается к серверу, и ему возвращается статус 200, поэтому он работает нормально. Но после моего конца службы со своей задачей, мой контроллер не выполняет свои строки:Angular JS - Мой контроллер не работает после выполнения моего служебного скрипта

Контроллер:

loginService.signin(formData, function(res) { 
    console.log('This message never prints'); 
}); 

Кто-нибудь есть идея о том, как решить эту проблему? Может быть, мой перехватчик вовлечен в это поведение. Вот мои скрипты:

app.js

'use strict'; 

var app = angular.module('myapp', [ 
'ngRoute', 
'ngStorage', 
'ngCookies', 
'myapp.controllers', 
'myapp.services' 
]); 

app.config(['$routeProvider', '$httpProvider', function ($routeProvider, $httpProvider) { 

    $routeProvider 
     .when('/', { 
      templateUrl: 'views/logueo.html', 
      controller: 'LoginController' 
     }) 
     .when('/principal', { 
      templateUrl: 'views/principal.html' 
     }) 
     .otherwise({ 
      redirectTo: '/' 
     }); 
}]); 

controller.js

angular.module('myapp.controllers', []) 

    .controller('LoginController', 
     ['$rootScope', 
     '$scope', 
     '$http', 
     '$location', 
     '$localStorage', 
     'loginService', 
     '$cookies', 
     function ($rootScope, $scope, $http, $location, $localStorage, loginService, $cookies) { 

     $scope.signin = function() { 

      var formData = { 
       username: $scope.username, 
       password: $scope.password 
      }; 

      loginService.signin(formData, function(res) { 

       // PROBLEM HERE. 
       // ITS NOT EXECUTING THE REST OF THIS LINES. 

       // Usuario incorecto. 
       if (res.type == false) { 
        console.log("FALSE " + res.data); 

       } 
       // Usuario correcto. 
       else { 
        window.location = "#/principal.html"; 
       } 

      }, function() { 
       $rootScope.error = "Error en el logueo del usuario"; 
      }); 
     } 
    }]); 

service.js

'use strict'; 

angular.module('myapp.services', []) 
.factory('loginService', ['$http', '$localStorage', 'tokenStorage', 
     function ($http, $localStorage, tokenStorage) { 
     // THIS IS EXECUTING VERY WELL 
     return { 
      signin: function(data, success, error) { 

       $http.post(
         'http://myweb.com/api' + '/login', 
         data 
        ).success(function (result, status, headers) { 
         console.log("logueado"); 

        }).error(function (data, status, headers, config) { 
         console.log("error. " + data); 
        }) 
      } 
     }; 

    }]); 
+0

Лучше, если вместо того, чтобы передавать метод обратного вызова, вы позволяете своему методу подписи вернуть обещание, а затем использовать его в контроллере. –

+0

Я собираюсь сделать это, как только закончу задачу в своей работе, большое спасибо @AbhishekJain – RicardoGonzales

ответ

0

Вы не называя функцию успеха, переданную функцией signin:

signin: function(data, success, error) { 

      $http.post(
        'http://myweb.com/api' + '/login', 
        data 
       ).success(function (result, status, headers) { 
        success(result); 
        console.log("logueado"); 
        tokenStorage.store(headers('X-AUTH-TOKEN')); 

       }).error(function (data, status, headers, config) { 
        console.log("error. " + data); 
       }) 
     } 
Смежные вопросы