2013-10-09 16 views
11

के साथ टाइप स्क्रिप्ट में कोणीय सेवा इस समय मैं अपने सिर गोल कोणीय प्राप्त करने की कोशिश कर रहा हूं। मैं वर्तमान में सेवाओं को देख रहा हूं, मैं कोड के लिए टाइपस्क्रिप्ट का उपयोग भी कर रहा हूं।निर्भरता इंजेक्शन और minification

अब वेब पर नमूने से मैंने देखा है कि लोग टाइपस्क्रिप्ट में किसी सेवा के लिए नीचे की तरह कुछ उपयोग करते हैं।

class Service 
{ 
    constructor(private $http: ng.IHttpService) 
    { 
    } 

    public MyMethod() 
    { 
     this.$http.get("/") 
      .success(null) 
      .error(null); 
    } 
} 

अब अगर इस न्यूनतम किया गया है मैं निर्माता से $http खो देगा और कोणीय चर नाम की आवश्यकता है। तो मैंने चारों ओर जांच की और पाया कि मैं कन्स्ट्रक्टर के बजाय $ इंजेक्ट का उपयोग कर सकता हूं लेकिन यह भी एक ही खनन समस्या प्राप्त करेगा।

लोग टाइपस्क्रिप्ट संदर्भ में खनन और कोणीय से कैसे निपट रहे हैं? मैं कुछ ठोस दस्तावेज़ों को खोजने के लिए संघर्ष कर रहा हूं कि इसे कैसे संभाला जाना चाहिए। मेरे लिए यह आधुनिक एपीआई में इन समस्याओं को लेकर अजीब लगता है, इसलिए मुझे कहीं कुछ याद आना चाहिए।

+1

आप gglp के लिए "ngAnotate" मॉड्यूल uglifyid से पहले उपयोग कर सकते हैं, इसलिए यह कोणीय में निर्भरताओं को खोने से रोक देगा। उदाहरण के लिए: gulp.src (paths.ts) .pipe (ts (ts.createProject ('tsconfig.json'))। पाइप (concat ('app.min.js'))। पाइप (ngAnnotate ({निकालें : सत्य, जोड़ें: सत्य, एकल_क्वाट्स: सत्य}))। पाइप (uglify())। पाइप (gulp.dest ('www/js /')) – ekussberg

उत्तर

16

बस $inject वाक्यविन्यास का उपयोग कर। जैसे :

class Service 
{ 
    static $inject = ['$http'];  
    constructor(private $http: ng.IHttpService) 
    { 
    } 

    public MyMethod() 
    { 
     this.$http.get("/") 
      .success(null) 
      .error(null); 
    } 
} 

पुनश्च: http://www.youtube.com/watch?v=WdtVn_8K17E&hd=1

+0

लेकिन इस तरह, प्रत्येक 'सेवा' उदाहरण को अपना '$ http' संदर्भ। वेनिला जावास्क्रिप्ट में, 'angular.factory' विधि को आमतौर पर बंद करने में ऐसी निर्भरताओं तक पहुंचने के लिए उपयोग किया जाता है। टाइपस्क्रिप्ट में इसे प्राप्त करने के लिए आप कौन सी सर्वोत्तम प्रथाओं का सुझाव देंगे? – mhelvens

+0

सेवाएं सिंगलेट हैं। केवल एक उदाहरण होगा – basarat

+0

जावास्क्रिप्ट कक्षाओं (या सिंगलेट्स) के बारे में नहीं जानता है, और इसलिए न तो कोणीय जेएस करता है। सेवाएं कुछ भी हो सकती हैं। मैं उम्र के लिए सेवाओं के रूप में तत्काल 'वर्ग' की पेशकश कर रहा हूं। – mhelvens

0

वर्तमान में सरकारी टाइपप्रति संकलक अभी भी इंटरफ़ेस मेटाडाटा कि एक डि प्रणाली के लिए कार्यावधि में इस्तेमाल किया जा सकता उत्सर्जन नहीं: मैं इस विषय पर एक विस्तृत वीडियो था। एमिटर एक्स्टेंसिबिलिटी here के बारे में एक मुद्दा है। इस बीच मैंने एक कोणीय जेएस 1.3 एप्लिकेशन के इंटरफेस मेटाडेटा को छोड़कर टीएस कंपाइलर के एक अनुकूलित संस्करण के साथ बनाया है जो सजावटकर्ताओं को अनुप्रयोग मॉड्यूल में घटकों को पंजीकृत करने और रनटाइम पर कक्षा मेटाडेटा का उपयोग करके निर्भरता इंजेक्ट करता है। आप here देख सकते हैं।

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