2017-03-06 6 views
8

कोणीय की 'दिशाहीन डाटा प्रवाह नियम "severaltimesinthe docs उल्लेख किया है लेकिन कहीं कोणीय डॉक्स कभी स्पष्ट रूप से (जोर पर स्पष्ट रूप से) परिभाषित यूनिडायरेक्शनल डाटा प्रवाह शासन करते हैं।कोणीय के "यूनिडायरेक्शनल डेटा प्रवाह नियम" क्या है?

this page से::

यहाँ निकटतम चीजें मैं दिशाहीन डाटा प्रवाह शासन की स्पष्ट परिभाषा के लिए मिल सकता है कर रहे हैं

कोणीय के दिशाहीन डाटा प्रवाह शासन को देखने के लिए अद्यतन की मनाही के बाद यह किया गया है रचना की।

पर्याप्त मेला है, लेकिन यह देखने के लिए वास्तव में इसका क्या अर्थ है? दृश्य के लिए एक अद्यतन क्या है? क्या हम हर समय विचारों को अपडेट नहीं कर रहे हैं?

this page से:

एक महत्वपूर्ण अभिकथन [enableProdMode] से अक्षम पुष्टि करता है कि एक परिवर्तन का पता लगाने के पास किसी भी बाइंडिंग (भी दिशाहीन डाटा प्रवाह के रूप में जाना जाता है) में अतिरिक्त परिवर्तन में परिणाम नहीं करता है।

मुझे इस वाक्य को धीरे-धीरे 8 बार धीरे-धीरे पढ़ना पड़ा और मुझे अभी भी यह नहीं मिला। जब यह "यूनिडायरेक्शनल डेटा प्रवाह के रूप में भी जाना जाता है" कहता है, तो मैं ऐसी चीज मान रहा हूं जिसे यूनिडायरेक्शनल डेटा प्रवाह के रूप में भी जाना जाता है "यह है कि एक परिवर्तन पहचान पास से किसी भी बाइंडिंग में अतिरिक्त परिवर्तन नहीं होते हैं"। ठीक है, शायद हम करीब आ रहे हैं। हालांकि सुंदर सार। एक उदाहरण या कुछ के बारे में कैसे?


इन दोनों काफी अपारदर्शी ब्लर्ब सभी कोणीय डॉक्स जाहिरा तौर पर दिशाहीन डाटा प्रवाह शासन के बारे में की बंद होने के लिए हमें दे रहे हैं। अपर्याप्त लगता है।

क्या कोई मुझे यह स्पष्ट रूप से समझा सकता है, अधिमानतः जैसे कि मैं बहुत बेवकूफ हूं?


संपादित: मैंने पाया क्या एक तिहाई सुराग हो सकता है, this page पर:

एक टेम्पलेट अभिव्यक्ति किसी भी आवेदन लक्ष्य संपत्ति के मूल्य के अलावा अन्य राज्य परिवर्तन नहीं होना चाहिए।

यह नियम कोणीय के "यूनिडायरेक्शनल डेटा प्रवाह" नीति के लिए आवश्यक है। आपको कभी चिंता नहीं करनी चाहिए कि एक घटक मूल्य पढ़ने से कुछ अन्य प्रदर्शित मूल्य बदल सकते हैं। दृश्य एक एकल प्रतिपादन पास में स्थिर होना चाहिए।

ठीक है। आपको कभी चिंता नहीं करनी चाहिए कि एक घटक मूल्य पढ़ने से कुछ अन्य प्रदर्शित मूल्य बदल सकते हैं। है कि कोणीय के यूनिडायरेक्शनल डेटा प्रवाह नियम? मैं ऐसा नहीं सोचूंगा क्योंकि यह नियम के अन्य उल्लेखों से सहमत नहीं है। मैं अभी भी असमंजस में हूँ।

+0

थिंक तरह के अन्य चौखटे में छाया डोम की तरह फेंक देते हैं। सरलीकृत क्रम में, आपके पास डिटेक्शन बदलें, फिर संरचना (परिवर्तनों पर प्रतिक्रिया दें), फिर रेंडरिंग (डीओएम को संरचना लिखें)। यह सब चक्रों में होता है; आप रचना के दौरान बदलना चाहिए जो कुछ भी बदलने के लिए प्रस्तुत करने का कार्य नहीं चाहते हैं। – Claies

उत्तर

3

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

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

0

"यूनिडायरेक्शनल डेटा प्रवाह" अंतर्निहित परिवर्तन पहचान प्रक्रिया का जिक्र कर रहा है। तो quesion का जवाब .....

आपको कभी चिंता नहीं करनी चाहिए कि एक घटक मूल्य पढ़ने से कुछ अन्य प्रदर्शित मूल्य बदल सकते हैं। क्या यह कोणीय का यूनिडायरेक्शनल डेटा प्रवाह नियम है?

...... हाँ है।

परिवर्तन पहचान चरण के दौरान, कोणीय यह देखने के लिए जांच करेगा कि टेम्पलेट में अभिव्यक्ति में संदर्भित एक चर बदल गया है या नहीं। यदि यह है, तो यह नया मान HTML में डाला गया है। हालांकि यह जांच हो रही है, 'गेटर' फ़ंक्शन, या अभिव्यक्ति को किसी अन्य मान को नहीं बदला जाना चाहिए।

यह https://angular.io/guide/template-syntax#expression-guidelines

बहुत अच्छा लेख का कोई साइड इफेक्ट्स अनुभाग है (Thoughtram.io) https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html

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

एक और दिलचस्प अवलोकन यह है कि एक ही पास के बाद परिवर्तन पहचान स्थिर हो जाती है। जिसका अर्थ है कि, अगर हमारे घटकों में से एक किसी भी अतिरिक्त साइड इफेक्ट परिवर्तन का पता लगाने के दौरान पहली बार चलाने के बाद का कारण बनता है, कोणीय एक त्रुटि यह

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