2013-07-07 9 views
9

मैं TypeError: Cannot call method 'get' of undefined जब इस मॉड्यूल चल:

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"; 
    } 
); 

}]); 

क्या मैं गलत यहाँ कर रहा हूँ और मैं इसे कैसे ठीक कर सकते हैं?

उत्तर

18

ब्रैकेट नोटेशन का उपयोग करते समय फ़ंक्शन से पहले निर्भरता सूची को फ़ंक्शन में इंजेक्शन वाली सेवाओं से मेल खाने की आवश्यकता होती है।

आप अपने EventsListController समारोह में एक अतिरिक्त $location सेवा है, इसलिए यह परिवर्तन:

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

कुंजी परिवर्तन किया जा रहा है: function EventListController($scope, $http)function EventListController($scope, $location, $http)

+0

के बजाय मैं काश

.controller('EventListCtrl', ['$scope', '$http', function EventListController($scope, $location, $http) { // controller code goes here }]); 
इस के लिए

इस जवाब को दो बार बढ़ा सकता है! यह मेरा सटीक कारण नहीं था, लेकिन मदद की। मेरा संपादक मेरी .min फ़ाइल को अपडेट करने में असफल रहा, जिसका उपयोग केवल उत्पादन में किया जाता है, इसलिए मैंने यह पता लगाने की कोशिश करते हुए काफी समय बिताया कि क्यों मेरी तैनाती ने उत्पादन तोड़ दिया और कोई अन्य वातावरण नहीं। मेरे सप्ताहांत को बचाने के लिए धन्यवाद! –

संबंधित मुद्दे