मैं अपने $ स्कोप ऑब्जेक्ट को एक कंट्रोलर से दूसरे का उपयोग करके कैसे भेज सकता हूं। $ emit और। विधियों पर $?
आप अपने एप्लिकेशन के पदानुक्रम में कोई भी वस्तु भेज सकते हैं, जिसमें $ गुंजाइश भी शामिल है ।
यहाँ एक त्वरित विचार है कि प्रसारण और उत्सर्जन कैसे काम करते हैं।
नीचे दिए गए नोड्स को नोटिस करें; नोड के भीतर सभी नेस्टेड 3. आप इस परिदृश्य के होने पर प्रसारण और उत्सर्जन का उपयोग करते हैं।
नोट: इस उदाहरण में प्रत्येक नोड की संख्या मनमाना है; यह आसानी से नंबर एक हो सकता है; नंबर दो; या यहां तक कि संख्या 1,348। प्रत्येक संख्या इस उदाहरण के लिए एक पहचानकर्ता है। इस उदाहरण का उद्देश्य कोणीय नियंत्रकों / निर्देशों का नेस्टिंग दिखाना है।
3
------------
| |
----- ------
1 | 2 |
--- --- --- ---
| | | | | | | |
इस पेड़ को देखें। आप निम्नलिखित प्रश्नों के उत्तर कैसे देंगे?
नोट: इन सवालों के जवाब देने के अन्य तरीके हैं, लेकिन यहां हम प्रसारण और उत्सर्जन पर चर्चा करेंगे । इसके अलावा, जब पाठ पढ़ने से लगता है कि प्रत्येक संख्या में स्वयं की फ़ाइल (निर्देश, नियंत्रक) है, तो एक .js, दो.js, तीन.js।
नोड 1 नोड 3 से कैसे बोलता है ?
फ़ाइल one.js में
scope.$emit('messageOne', someValue(s));
फ़ाइल में तीन.js - सभी बच्चों के लिए ऊपर के नोड को संवाद करने के लिए आवश्यक नोड्स।
scope.$on('messageOne', someValue(s));
नोड 2 कैसे नोड 3 से बात करता है?
फाइल में दो.जे.
scope.$emit('messageTwo', someValue(s));
फ़ाइल में तीन.js - सभी बच्चों के लिए ऊपर के नोड को संवाद करने के लिए आवश्यक नोड्स।
scope.$on('messageTwo', someValue(s));
नोड 3 कैसे नोड 1 और / या नोड 2 से बात करता है?
फ़ाइल में तीन.js - सभी बच्चों के लिए ऊपर के नोड को संवाद करने के लिए आवश्यक नोड्स।
scope.$broadcast('messageThree', someValue(s));
फ़ाइल में one.js && दो. js जो भी फ़ाइल आप संदेश या दोनों को पकड़ना चाहते हैं।
scope.$on('messageThree', someValue(s));
कैसे नोड 2 नोड 1 से बात करता है?
फाइल में दो.जे.
scope.$emit('messageTwo', someValue(s));
फ़ाइल में तीन.js - सभी बच्चों के लिए ऊपर के नोड को संवाद करने के लिए आवश्यक नोड्स।
scope.$on('messageTwo', function( event, data ){
scope.$broadcast( 'messageTwo', data );
});
फ़ाइल one.js में
scope.$on('messageTwo', someValue(s));
तथापि
जब आपके पास इन सभी नेस्टेड चाइल्ड नोड्स हैं जो इस तरह से संवाद करने की कोशिश कर रहे हैं, तो आप जल्दी से कई $ पर देखेंगे , $ ब्रॉडकास्ट और $ एमिट ।
यहाँ मुझे क्या करना पसंद है।
ऊपर के हिस्से में NODE ( इस मामले में 3 ...), जो आपके मूल नियंत्रक हो सकता है ...
तो, फ़ाइल में तीन.js
scope.$on('pushChangesToAllNodes', function( event, message ){
scope.$broadcast( message.name, message.data );
});
अब बच्चे के किसी भी नोड में आपको केवल $ emit करने की जरूरत है या $ पर प्रयोग करके इसे पकड़ना चाहिए ।
नोट: यह आमतौर पर $ emit , $ प्रसारण , या $ का उपयोग किए बिना एक नेस्टेड पथ में बात को पार करने के लिए काफी आसान है , जिसका अर्थ है कि अधिकांश उपयोग के मामले हैं जब आप नोड 2 के साथ संवाद करने के लिए नोड 1 प्राप्त करने की कोशिश कर रहे हैं। या इसके विपरीत के ।
कैसे नोड 2 नोड 1 से बात करता है?
फाइल में दो.जे.
scope.$emit('pushChangesToAllNodes', sendNewChanges());
function sendNewChanges(){ // for some event.
return { name: 'talkToOne', data: [1,2,3] };
}
फ़ाइल में तीन.js - सभी बच्चों के लिए ऊपर के नोड को संवाद करने के लिए आवश्यक नोड्स।
हम पहले से ही इस एक को याद किया?
फ़ाइल one.js में
scope.$on('talkToOne', function( event, arrayOfNumbers ){
arrayOfNumbers.forEach(function(number){
console.log(number);
});
});
आपको अभी भी प्रत्येक विशिष्ट मूल्य के साथ $ का उपयोग करने की आवश्यकता होगी जिसे आप पकड़ना चाहते हैं, लेकिन अब आप किसी भी नोड्स में जो कुछ भी पसंद करते हैं, उसके बारे में चिंता किए बिना बना सकते हैं कि कैसे हम मूल नोड अंतराल पर संदेश प्राप्त करें कि हम कैसे पकड़ें और प्रसारित करें जेनेरिक धक्का ।
उम्मीद है की यह मदद करेगा...
$rootScope
प्रसारण से बचने के लिए उपयोग न करें जब इसे टाला जा सकता है।