2015-05-17 19 views
12

प्रिय सभी मैं कोणीय के लिए नया हूं मैं कोणीय के साथ एक मॉडल बना रहा हूं। उदाहरण मैं ऑनलाइन पाया में से एक जिसके बाद मैं कठिनाई को समझनेकोणीय-यूआई मॉडल संकल्प

$scope.checkout = function (cartObj) { 
    var modalInstance = $modal.open({ 
    templateUrl : 'assets/menu/directives/payment-processing-modal.tmpl.html', 
    controller : ["$scope", "$modalInstance", "cartObj", function($scope, $modalInstance, cartObj) { 
    }], 
    resolve : { // This fires up before controller loads and templates rendered 
    cartObj : function() { 
     return cartObj; 
    } 
    } 
}); 

क्या मैं के बारे में उलझन में हूँ cartObj जो मैं पहले ही अपनी समारोह के लिए एक पैरामीटर के रूप में प्राप्त निर्भरता इंजेक्शन के माध्यम से अपने नियंत्रक से पारित हो जाता है है है। हालांकि मुझे कार्टऑब नामक एक फ़ंक्शन क्यों बनाना है और उस चर को वापस करना है। यह भ्रमित लगता है। क्या कोई मदद कर सकता है?

उत्तर

24

यहाँ पंक्ति-दर-पंक्ति टूटने है:

$scope.checkout = function (cartObj) { 

एक $ गुंजाइश चर नामित चेकआउट बनाया जा रहा है एक समारोह का संदर्भ जो ताकि आप इसे ध्यान में रखते हुए checkout() के रूप में (उदाहरण के लिए एक बटन से कॉल कर सकते हैं एनजी-क्लिक = "चेकआउट" के साथ)।

यह फ़ंक्शन सेवा को कार्टऑबज कहा जाता है।

var modalInstance = $modal.open({ 

एक चर modalInstance कहा जाता है $ मोडल सेवा खुला विधि कॉल करने के लिए किया जाता है।

यूआई बूटस्ट्रैप $ मोडल सेवा एक मोडल उदाहरण देता है।

templateUrl : 'assets/menu/directives/payment-processing-modal.tmpl.html', 

यह कहना है कि मोडल उदाहरण संबंधित URL पर मिलने वाली टेम्पलेट का उपयोग करना चाहिए: खुले विधि एक वस्तु है कि मोडल उदाहरण विन्यास को परिभाषित करता है इस प्रकार पारित कर दिया है।

controller : ["$scope", "$modalInstance", "cartObj", function($scope, $modalInstance, cartObj) { 
    }], 

इस मोडल उदाहरण है कि $ गुंजाइश, $ modalInstance सेवाओं और, महत्वपूर्ण बात, संकल्प लिया cartObj सेवा पारित कर दिया के लिए एक नियंत्रक पैदा करता है।

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

resolve : { // This fires up before controller loads and templates rendered 
    cartObj : function() { 
     return cartObj; 
    } 
    } 
}); 

कारण यहां संकल्प प्रयोग करने के लिए शायद इसलिए है क्योंकि स्वयं टेम्पलेट निर्भर है पर cartObj से कुछ डेटा उपलब्ध जा रहा है जब टेम्पलेट भरी हुई है है: यह जहां संकल्प में आता है। संकल्प लोडर से पहले वादे को हल करेगा ताकि जब ऐसा होता है, तो डेटा वहां और तैयार होता है। असल में, संकल्प एक नियंत्रक के अंदर मॉडल के प्रारंभिककरण को सरल बनाता है क्योंकि प्रारंभिक डेटा नियंत्रक को डेटा आउट करने और डेटा लाने की आवश्यकता के बजाय नियंत्रक को दिया जाता है।

हल किए गए कार्टओबीजे को मोडल इंस्टेंस में पारित किया जाता है और इसलिए इसे नियंत्रक में एक्सेस किया जा सकता है: cartObj। कुछप्रोपर्टी

+2

यह गलत है: 'मोडल इंस्टेंस नामक एक चर का उपयोग $ मोडल सेवा ओपन विधि को कॉल करने के लिए किया जाता है।' 'मोडल' सेवा की 'ओपन()' विधि को कॉल करने से मोडल इंस्टेंस लौटाता है, जिसे 'मोडल इंस्टेंस' में संग्रहीत किया जाता है। चर। – ps2goat

+0

मैंने पाया कि यह केवल तब काम करता है जब आपने टेम्पलेट के बजाय modal.open कॉल में नियंत्रक को परिभाषित किया – nuander

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