2013-02-20 17 views
5

में पैरेंट स्कोप को संशोधित करना मुझे यह थ्रेड मिला जिसमें ओपी का original fiddle है जहां ng-include डी स्कोप अपने मूल दायरे को संशोधित नहीं करता है।एंगुलरजेएस:

उत्तरों में से एक पता चलता है:

यह बदसूरत और अप्रत्याशित है, तो मैं सुझाव है कि आप एक वस्तु चर में अपने डेटा को रैप करने के लिए: http://jsfiddle.net/e5rfP/3/

जो काम करने के लिए लगता है। ऐसा क्यों है?

+0

कृपया देखें http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance -इन-एंजुलरजेस/14049482 # 14049482 –

+0

उत्कृष्ट उत्तर, मार्क। – jogloran

उत्तर

8

एक ऑब्जेक्ट वेरिएबल जावास्क्रिप्ट प्रोटोटाइप विरासत के तरीके के कारण काम करता है। ng शामिल अपने बच्चे के दायरे बनाता है। इस बच्चे का दायरा मूल रूप से मूल दायरे से विरासत में मिलता है।

जावास्क्रिप्ट में, जब हम एक बच्चे दायरे में $scope.x = 22 की तरह कुछ लिखते हैं, इस बच्चे $ गुंजाइश पर एक x संपत्ति बनाता है और यह मूल्य 22 सौंपता है - प्रोटोटाइप श्रृंखला यहाँ से परामर्श नहीं है, इसलिए माता-पिता $ गुंजाइश करता है नहीं हुआ क्या हुआ।

जब हम, $scope.someObj.prop1 = 22 बच्चे गुंजाइश पर की तरह कुछ लिखने यदि जावास्क्रिप्ट बच्चे $ गुंजाइश पर someObj वस्तु नहीं मिल रहा है, यह प्रोटोटाइप श्रृंखला सलाह भी लेता है, और श्रृंखला में अगले $ गुंजाइश माता पिता $ गुंजाइश है। यदि someObj मूल $ दायरे पर मौजूद है, तो मूल $ स्कोप संशोधित किया गया है।

मैं एक टिप्पणी में उल्लेख किया है, तो सवाल यह निम्न और जवाब (चित्रों के बहुत सारे के साथ) यह सब में और अधिक विस्तार बताते हैं: What are the nuances of scope prototypal/prototypical inheritance in AngularJS?

0

यह निर्देश एक नया गुंजाइश बनाए बिना एक आंशिक शामिल होंगे। उदाहरण के लिए आप आंशिक और नियंत्रण में एक फॉर्म बना सकते हैं जो मूल नियंत्रक से बना है।

यहां एक link to the Repo है जिसे मैंने इसके लिए बनाया है।

मैं this S.O. answer अच्छी किस्मत पर मेरा उत्तर आधारित :-)

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