2016-12-26 4 views
1

LoginController.jsобъект не поддерживает свойство или метод getUserData

var MyApp = angular.module('MyApp', []); 
    MyApp.controller("LoginController", 
      ["$scope", "$rootScope", 
      function ($scope , dataService) { 

      $scope.user = "sample"; 

      $scope.checkUser = function() { 
       dataService.getUserData($scope.user).then(
         function (results) { 
          $scope.userLoginInfo = results.userInfo; 
         }, 
         function (results) { 
          $rootScope.showAlert(results, "There is a problem when trying to get user details."); 
         }); 
      }; 

     }]); 

Мои DataService.js

MyApp.factory("dataService", 
    ["$http", "$rootScope", "$q", 
    function ($http, $rootScope,$q) { 

     var dataService = {}; 

     var getUserData = function (username) { 

      var promise = $http.get(baseUrl()+"/Controllers/UserDetails/?username=" + username) 
       .success(function (data, status, headers, config) { 
       return data; 
       }) 
       .error(function (data, status, headers, config) { 
        return data; 
       }); 

      return promise; 

     } 

     return { 
      getUserData: getUserData 
     } 

    }]); 

Я включил все .js файлы через bundleconfig .он вызова dataService.getUserData в логин контроллер, описанная ошибка возникает.

Ниже трассировки стека

"TypeError: Object doesn't support property or method 'getUserData'\n at $scope.checkUser (http://localhost:58949/app/Controllers/LoginController.js:41:9) 
at fn (Function code:2:195)\n at expensiveCheckFn (http://localhost:58949/Scripts/angular.js:16123:11)\n at callback (http://localhost:58949/Scripts/angular.js:26490:17)\n at Scope.prototype.$eval (http://localhost:58949/Scripts/angular.js:17913:9)\n at Scope.prototype.$apply (http://localhost:58949/Scripts/angular.js:18013:13)\n at Anonymous function (http://localhost:58949/Scripts/angular.js:26495:17)\n at n.event.dispatch (http://localhost:58949/Scripts/jquery-2.2.3.min.js:3:7481)\n at r.handle (http://localhost:58949/Scripts/jquery-2.2.3.min.js:3:5547)" 

любая помощь очень ценится

+0

создать демоверсию, которая воспроизводит проблему – charlietfl

+0

Осмотрите вывод 'console.log (dataService)' в файле 'LoginController.js' – Hackerman

ответ

1

Вы не вводили DATASERVICE так в вашем сценарии вместо доступа "dataService" он экранный "$rootScope" попробовать это:

// controller 

var MyApp = angular.module('MyApp', []); 
MyApp.controller("LoginController", ["$scope", "$rootScope", "dataService", 
    function($scope, $rootScope, dataService) { 
     $scope.user = "sample"; 

     $scope.checkUser = function() { 
      dataService.getUserData($scope.user).then(
       function(results) { 
        $scope.userLoginInfo = results.userInfo; 
       }, 
       function(results) { 
        $rootScope.showAlert(results, "There is a problem when trying to get user details."); 
       }); 
     }; 

    } 
]); 

Также в службе

следующей строки /Controllers/UserDetails/?username= кажется неверными, Переходит запроса следующим образом:

// "/Controllers/UserDetails?username=" 

// Service 
MyApp.factory("dataService", ["$http", "$rootScope", "$q", 
    function($http, $rootScope, $q) { 

     var dataService = {}; 

     var getUserData = function(username) { 

      var promise = $http.get(baseUrl() + "/Controllers/UserDetails?username=" + username) 
       .success(function(data, status, headers, config) { 
        return data; 
       }) 
       .error(function(data, status, headers, config) { 
        return data; 
       }); 

      return promise; 

     } 

     return { 
      getUserData: getUserData 
     } 

    } 
]); 
0

Инжектируйте DATASERVICE.

MyApp.controller("LoginController", 
      ["$scope", "$rootScope","dataService", 
      function ($scope ,rootScope dataService) { 
. . 
} 

Если dataService не вводится должным образом, следовательно, он выдает ошибку.

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