8

Có lẽ tôi đang thiếu một số loại tài sản, nhưng tôi làm theo điều này project và tôi nhận được lỗi này trong bộ điều khiển của tôi.Góc - TypeError: XX không phải là một chức năng

TypeError: loginService.signin is not a function 

Đây là controller.js tôi

angular.module('appcontrollers', []).controller('LoginController', ['$rootScope', '$scope', '$http', '$location', '$localStorage', 'loginService', 
     function ($rootScope, $scope, $http, loginService) { 

     $scope.signin = function() { 

      console.log("username: " + $scope.username); 
      console.log("pass: " + $scope.password); 

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

      // ERROR IN THIS LINE 
      loginService.signin(formData, function(res) { 
       console.log("asdf"); 
       if (res.type == false) { 
        console.log(res.data); 
       } else { 
        $localStorage.token = res.data.token; 
        console.log("Window location /"); 
       } 
      }, function() { 
       $rootScope.error = "Error en el logueo del usuario"; 
      }); 

      // Setting Token: 
      $scope.token = $localStorage.token; 
     } 

    }]) 

Đây là service.js tôi

'use strict'; 

angular.module('app-services', []) 
.factory('loginService', ['$http', '$localStorage', function ($http, $localStorage) { 
    console.log('services - loginService'); 

    var baseUrl = "http://angular-restful-auth.herokuapp.com"; 

    function changeUser(user) { 
     console.log('1'); 
     angular.extend(currentUser, user); 
    } 

    function urlBase64Decode(str) { 
     console.log('2'); 
     var output = str.replace('-', '+').replace('_', '/'); 
     switch (output.length % 4) { 
      case 0: 
       break; 
      case 2: 
       output += '=='; 
       break; 
      case 3: 
       output += '='; 
       break; 
      default: 
       throw 'Illegal base64url string!'; 
     } 
     return window.atob(output); 
    } 

    function getUserFromToken() { 
     console.log('3'); 
     var token = $localStorage.token; 
     var user = {}; 
     if (typeof token !== 'undefined') { 
      var encoded = token.split('.')[1]; 
      user = JSON.parse(urlBase64Decode(encoded)); 
     } 
     return user; 
    } 

    // Set user token. 
    var currentUser = getUserFromToken(); 

    return { 
     save: function(data, success, error) { 
      $http.post(baseUrl + '/signin', data).success(success).error(error) 
     }, 
     signin: function(data, success, error) { 
      $http.post(baseUrl + '/authenticate', data).success(success).error(error) 
     }, 
     me: function(success, error) { 
      $http.get(baseUrl + '/me').success(success).error(error) 
     }, 
     logout: function(success) { 
      changeUser({}); 
      delete $localStorage.token; 
      success(); 
     } 
    }; 
} 

]); 

ứng dụng tôi làm việc cho đến khi báo chí sử dụng nút gửi gọi signin() từ mẫu. Sau đó, tôi có hai dòng này trong bảng điều khiển của mình với dữ liệu chính xác

>> username: somename 
>> pass: somepassword 

Và sau đó lỗi xuất hiện. Bất cứ ai có thể giúp tôi để vượt qua chức năng này signin()?

Trả lời

19

Bạn đang gây rối với mảng phun phụ thuộc, điều đó phải tuân theo đúng thứ tự phụ thuộc khi bạn đang sử dụng nó trong một hàm.

angular.module('appcontrollers', []).controller('LoginController', ['$rootScope', '$scope', '$http', '$location', '$localStorage', 'loginService', 
     function ($rootScope, $scope, $http, $location, $localStorage, loginService) { 
Các vấn đề liên quan