8

मैं जावास्क्रिप्ट प्रोग्रामिंग के लिए काफी नया हूं और मैंने केवल एंगुलरजेएस पर स्पर्श किया है। इसका मूल्यांकन करने के लिए मैंने एक साधारण नोट आवेदन लिखने का फैसला किया। मॉडल वास्तव में सरल है, नोट्स की एक सूची जहां प्रत्येक नोट में एक लेबल, एक पाठ और टैग की एक सूची है। हालांकि मैं नेस्टेड निर्देशों के अलग-अलग क्षेत्रों के बीच डेटा गुजरने में समस्या में भाग गया।नेस्टेड और दोहराए गए कोणीय निर्देशों में लिंक फ़ंक्शन का कॉलिंग ऑर्डर

मेरे पास तीन निर्देश, नोट्स, नोट और टैगर हैं (एक ही नाम के साथ नए तत्वों को परिभाषित करना)। उनमें से प्रत्येक एक अलग गुंजाइश का उपयोग कर।

नोट्स निर्देश नोट तत्व के साथ अपने प्रत्येक नोट को "प्रस्तुत" करने के लिए ng-repeat का उपयोग करता है।

नोट निर्देश टैगर तत्व का उपयोग टैग की सूची "प्रस्तुत करने" के लिए करता है।

नोट निर्देश दायरे को परिभाषित करता है: नोट प्राप्तकर्ता/निर्देश में नोट्स की सूची से नोट नोट पास करने के लिए {getNote: "&", ...}। नोट निर्देश (लिंक) फ़ंक्शन को नोट निर्देश के लिंक फ़ंक्शन में बुलाया जाता है। यह ठीक काम करता है!

टैगर निर्देशक स्कोप को परिभाषित करता है: {getTags: "&", ...} टैगर नियंत्रक/निर्देश को दिए गए नोट के लिए टैग की एक सूची पास करने के लिए। GetTags फ़ंक्शन को टैगर निर्देश के लिंक फ़ंक्शन में कॉल किया जाता है। यह काम नहीं करता!

जैसा कि मैं इसे समझता हूं, समस्या यह है कि निर्देशों के लिंक कार्यों को असंगत क्रम में बुलाया जाता है। आवेदन डिबगिंग पता चलता है कि लिंक कार्यों निम्न क्रम में कहा जाता है:

नोट में
  1. लिंक समारोह निर्देश (नोट्स गुंजाइश के लिए getNote समारोह जोड़ने) टैगर निर्देश में

  2. लिंक समारोह पहले ध्यान दें की पहली टिप्पणी निर्देश (गुंजाइश के लिए getTags जोड़ने) (getNote बुला में (बुला माता पिता टिप्पणी दायरे में getTags) समारोह

  3. लिंक समारोह माता-पिता नोटों गुंजाइश) दूसरे नोट के टैगर निर्देश में

  4. लिंक समारोह में (बुला माता पिता टिप्पणी दायरे में getTags) समारोह दूसरा टिप्पणी निर्देश (करने के लिए getTags जोड़ने में

  5. लिंक समारोह गुंजाइश) (मूल में getNote बुला नोटों गुंजाइश)

यह काम नहीं करेगा # 2 पहले ध्यान दें के दायरे में के बाद से अभी तक नहीं एक getTags समारोह है।

Plunker में एक सरल उदाहरण पाया जा सकता है।

इसलिए, मेरा प्रश्न नीचे उबलता है: आदेश निर्धारित करता है कि किस क्रम में नेस्टेड निर्देशों में लिंक फ़ंक्शन कहा जाता है।

(मैंने टैगर निर्देश में गेटटैग पर $ घड़ी का उपयोग करके समस्या का समाधान किया ...)

संबंध

+0

[कोणीय निर्देशों के प्रीलिंक, पोस्टलिंक और नियंत्रक तरीकों के लिए व्यावहारिक मार्गदर्शिका] (http://www.undefinednull.com/2014/07/07/practical-guide-to-prelink-postlink-and-controller- विधि -ऑफ-कोणीय-निर्देश /) घनिष्ठ निर्देशों पर प्री-लिंक/पोस्ट-लिंक का उपयोग करने के लिए काफी व्यापक लेख है। –

उत्तर

17

का हवाला देते हुए जोश डी मिलर जो कृपया एक ऐसी ही सवाल मैं था का जवाब दिया:

"बस तकनीकी नोट्स की एक जोड़ी मान लें तो आप इस मार्कअप है:।

<div directive1> 
    <div directive2> 
    <!-- ... --> 
    </div> 
</div> 

अब AngularJS पैदा करेगा एक निश्चित क्रम में निर्देश कार्यों चलाकर निर्देशों:

directive1: संकलन

directive2: संकलन

directive1: नियंत्रक

directive1: पूर्व लिंक

directive2: नियंत्रक

directive2: पूर्व लिंक

directive2: के बाद लिंक

directive1: के बाद लिंक

डिफ़ॉल्ट रूप से एक सीधे "लिंक" समारोह के बाद लिंक, तो अपने बाहरी directive1 के लिंक काम नहीं करेगा है आंतरिक निर्देश 2 के लिंक फ़ंक्शन के बाद तक चलाएं। यही कारण है कि हम कहते हैं कि पोस्ट-लिंक में डीओएम हेरफेर करना केवल सुरक्षित है। "

+3

हाय @ टाहिर उत्तर देने के लिए धन्यवाद।शायद मैं के रूप में मेरे plunker में देखा मूर्ख हूँ लेकिन, मेरे पास है: लेकिन लिंक समारोह बुला आदेश है, , ... जबकि , , उम्मीद होगी आपके उत्तर के अनुसार ... क्षमा करें अगर मैं बेवकूफ हूं :-) – positively4th

+0

मुझे लगता है कि यह चीजों का मिश्रण है क्योंकि न केवल प्राथमिकता = 1000 (और आपने nested ng- दोहराव बयान)। लेकिन आप ट्रांसफर विकल्प का उपयोग नहीं करते हैं, इसलिए मैं आपके एम्बेडेड निर्देशों के संकलन आदेश के बारे में भी निश्चित नहीं हूं। – Taye

0

एक भी तत्व को जोड़ने कार्यों के आदेश पर संकलन कार्य है जो बदले में निर्देश परिभाषा वस्तु की priority संपत्ति के अनुसार आदेश दिया है के आदेश से निर्धारित होता है।

स्रोत: http://docs.angularjs.org/guide/directive

ट्रांसक्लुजन के साथ कई तत्वों पर: भीतरी निर्देशों बाहरी निर्देशों से पहले मूल्यांकन किया जाता है। कारण: स्थानांतरण की प्रकृति।

भाई बहनों के साथ कई तत्वों पर: शीर्ष से नीचे क्रम में निष्पादित। कारण: $ संकलन का विश्लेषण पार्सिंग।

+0

हाय @ बेसत, कुछ समय देने के लिए धन्यवाद! हालांकि मैं अपने प्रश्न पर अपना उत्तर लागू करने में विफल रहता हूं। मेरे पास एक ही तत्व पर कई निर्देश नहीं हैं। मैं ट्रांसक्यूलेशन का उपयोग नहीं करता हूं। मेरे नोट तत्व निश्चित रूप से भाई बहन हैं लेकिन मुझे यकीन नहीं है कि आपका क्या मतलब है। शायद यह स्पष्ट है लेकिन मैं अभी भी लिंक के कॉलिंग ऑर्डर को समझ नहीं पा रहा हूं मेरे प्लंकर उदाहरण में फ़ंक्शन। Reagrds – positively4th

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