2013-04-02 4 views
36

इम नियंत्रकों के साथ संकल्प का उपयोग कर कुछ डेटा लाने से पहले कोई नया दृश्य का प्रतिपादन इस तरह में लात मारता है नियंत्रकों के एक जोड़े के साथ संकल्प कार्यक्षमता का उपयोग:AngularJS: सही कम करें-सक्षम वाक्य रचना जब

HomeCtrl.resolve = { 
    pictures: function(Picture) { 
     return Picture.getall(); 
    } 
}; 

किसी को भी करता है यह कैसे लिखना है, इसलिए चित्र-सेवा, जिसे तर्क के रूप में पारित किया गया है, को छोटा होने पर ओवरराइट नहीं किया जाता है?

उत्तर

54

आप निम्न पद्धति का उपयोग कर निर्भरता इंजेक्षन कर सकते हैं, यह minification सबूत

HomeCtrl.resolve = { 
    pictures : ['Picture', function(Picture) { 
       return Picture.getall(); 
      }] 
}; 
+7

कोई भी जगह जहां कोणीय डीआई का उपयोग करता है, आप इस वाक्यविन्यास –

+1

का उपयोग कर सकते हैं दुख की बात है, यह मेरे लिए काम नहीं कर रहा है। HomeCtrl.resolve = { चित्र: ['$ q', फ़ंक्शन (ए) {}] }; अज्ञात प्रदाता की रिपोर्ट करेगा: aProvider <- a – wukong

+1

@wukong अगर आपको '$ q' सेवा इंजेक्ट करने की आवश्यकता है तो आपको इसे 'HomeCtrl.resolve = {चित्र: [' $ q ', फ़ंक्शन ($ q) {} की तरह करना चाहिए ]}, अगर आपको '$ q' सेवा और 'ए' सेवा इंजेक्ट करने की आवश्यकता है, तो आपको इसे 'HomeCtrl.resolve = {चित्र: [' $ q ',' a ', फ़ंक्शन ($ q) , ए) {}]} '। – acrmuui

2

संकल्प समारोह minification सुरक्षित बनाने के लिए एक और तरीका है:

HomeCtrl.resolve = { 
    pictures: getPictures 
}; 

getPictures.$inject = ['Picture']; 
function getPictures(Picture){ 
    return Picture.getall(); 
} 

इस तकनीक तथ्य का लाभ लेता है कि जावास्क्रिप्ट फ़ंक्शन भी ऑब्जेक्ट्स हैं और इसलिए, गुण हो सकते हैं।

अधिक जानकारी के लिए, https://docs.angularjs.org/guide/di पर जाएं और "$ इंजेक्ट" खोजें।

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