2013-07-07 23 views
9

mam TypeError: Cannot call method 'get' of undefined podczas pracy tego modułu:

angular.module('EventList', []) 

.config([ '$routeProvider', function config($routeProvider){ 
    $routeProvider.when(Urls.EVENT_LIST_PAGE, { 
     templateUrl: 'app/EventList/event-list.html', 
     controller: 'EventListCtrl' 
     }); 
}]) 


.controller('EventListCtrl', ['$scope', '$http', function EventListController($scope, $location, $http) { 
    $scope.events = []; 
    $http.get('http://localhost:8000/event'). 
    success(function (data, status) { 
     $scope.events = data; 
     for (var i = 0; i < $scope.events.length; i++) { 
     $scope.events[i].event_url = ('#' + Urls.EVENT_PAGE + '/' + $scope.events[i]._id); 
     } 
    }). 
    error(function (data, status) { 
     $scope.data = data || "Request failed"; 
    } 
); 

}]); 

Co robię źle tutaj i jak można to naprawić?

Odpowiedz

18

Podczas korzystania z notacji nawiasów lista zależności przed funkcją musi odpowiadać usługom wprowadzanym do funkcji.

Masz dodatkowy $location usługę w swojej funkcji EventsListController więc to zmienić:

.controller('EventListCtrl', ['$scope', '$http', function EventListController($scope, $location, $http) { 
// controller code goes here 
}]); 

do tego:

.controller('EventListCtrl', ['$scope', '$http', function EventListController($scope, $http) { 
// controller code goes here 
}]); 

Kluczową zmianą jest: function EventListController($scope, $http) zamiast function EventListController($scope, $location, $http)

+0

Żałuję może dwa razy odpowiedzieć na tę odpowiedź! To nie była moja dokładna przyczyna, ale pomogło. Mój edytor nie mógł zaktualizować pliku .min, który jest używany tylko w produkcji, więc spędziłem sporo czasu próbując ustalić, dlaczego moje wdrożenie spowodowało przerwę w produkcji i żadne inne środowisko. Dzięki za uratowanie mojego weekendu! –

Powiązane problemy