2014-10-09 14 views
5

की संपत्ति 'getSpec' नहीं पढ़ सकता है मैं AngularJS से शुरू कर रहा हूं और मुझे नियंत्रक से फैक्ट्री का उपयोग करने का प्रयास करते समय कुछ समस्याएं आ रही हैं।कोणीयजेएस - फैक्टरी - टाइप एरर: अपरिभाषित

मैं निम्नलिखित कारखाने

angular.module('testingApp') 
    .factory('factoryService', function ($http) { 
    // Service logic 
    var getSpec = function(p) { 
     return $http.get('http://someurl//?p=' + p); 
    }; 
    return { 
     getSpec: getSpec 
    }; 
    }); 

है और उसके बाद मैं मैं निम्नलिखित संदेश प्राप्त होता है इसे चलाने के लिए जब मैं कोशिश नियंत्रक से उपभोग करने के लिए के रूप में

angular.module('testingApp') 
    .controller('ServiceincientsCtrl',[ function (factoryService,$scope) { 
    console.log('Starting Service Incident Controller'); 
    factoryService.getSpec('AAA').then(function(response){ 
     $scope.result = response.data; 
    }, function(error){ 
     console.log('opsssss' + error); 
    }); 

    }]); 

इस प्रकार की कोशिश लेकिन

TypeError: Cannot read property 'getSpec' of undefined 

मुझे नहीं पता कि मैं क्या खो रहा हूं, यह एक नौसिखिया त्रुटि होनी चाहिए, मैंने इसे गुगल किया और मैंने कोशिश की एक ही परिणाम के साथ कोई उदाहरण।

मैं क्या गलत कर रहा हूं के बारे में कोई विचार?

धन्यवाद!

उत्तर

11

ऐसा लगता है कि आप निर्भरता सरणी नोटेशन का सही ढंग से उपयोग नहीं कर रहे हैं। कृपया नीचे दिए गए कोड का संदर्भ लें। सरणी वस्तुओं के रूप में कृपया 'factoryService' & '$scope' जोड़ें।

.controller('ServiceincientsCtrl', ['factoryService', '$scope', function(factoryService, $scope) { 
    console.log('Starting Service Incident Controller'); 
    factoryService.getSpec('AAA').then(function(response) { 
     $scope.result = response.data; 
    }, function(error) { 
     console.log('opsssss' + error); 
    }); 

}]); 

dependancy injection पर कोणीय वृत्तचित्र।

+0

धन्यवाद !!! यह वास्तव में मदद करता है !!! – federom

3

सबसे पहले, आपने अपने नियंत्रक को ठीक से घोषित नहीं किया था। यह इस तरह दिखना चाहिए:

.controller('ServiceincientsCtrl',['$scope', 'factoryService', function($scope, factoryService) { 

मैं व्यक्तिगत रूप से Service s का उपयोग के रूप में मैं उन्हें और अधिक पठनीय पाते हैं।

myApp.service('factoryService', function ($http) { 

    this.getSpec = function(p) { 
     return $http.get('http://someurl//?p=' + p); 
    } 

}); 

यह आपके वर्तमान नियंत्रक के साथ काम करेगा:

यहाँ अपने कारखाने की तरह Service एक के रूप में विचार करेंगे क्या।

+0

धन्यवाद !!! यह वास्तव में मदद करता है !!! – federom

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