2013-12-18 13 views
5

मैं अलग-अलग दायरे और निर्देश में विरासत में गुंजाइश के बीच अंतर को समझने की कोशिश कर रहा हूं। यह एक उदाहरण मैं अपने आप को समझाने के लिए तैयार है:एंगुलरजेएस निर्देश - पृथक स्कोप और विरासत स्कोप

एचटीएमएल

<div ng-controller="AppController"> 
    <div my-directive> 
     Inside isolated scope directive: {{myProperty}} 
    </div> 

    <div my-inherit-scope-directive> 
     Inside inherited scope directive: {{myProperty}} 
    </div> 
</div> 

जे एस

angular.module("myApp", []) 
     .directive("myInheritScopeDirective", function() { 
      return { 
       restrict: "A", 
       scope: true 
      }; 
     }) 
     .directive("myDirective", function() { 
      return { 
       restrict: "A", 
       scope: {} 
      }; 
     }) 
     .controller("AppController", ["$scope", function($scope) { 
      $scope.myProperty = "Understanding inherited and isolated scope"; 
     }]); 

कोणीय-1.1.5 के साथ कोड निष्पादित, यह रूप में काम करता मुझे उम्मीद थी: मेरे निर्देश के अंदर {{myProperty}} undefined अलग-अलग दायरे के कारण होगा, जबकि मेरे-वारिस-स्कोप-निर्देश के लिए, {{myProperty}} के पास मूल्यहोगा।

लेकिन कोणीय-1.2.1 के साथ निष्पादन, {{myProperty}} दोनों निर्देशों में Understanding inherited and isolated scope आउटपुट करता है।

मुझे कुछ भी याद आ रहा है?

उत्तर

2

आपके निर्देश के अंदर टेक्स्ट नोड नियंत्रक दायरे से जुड़ा हुआ है। इसलिए निर्देश का दायरा कोई प्रभाव नहीं पड़ता है। मुझे लगता है कि v1.2 के रूप में changed है।

.directive("myIsolatedDirective", function() { 
    return { 
     template: 'Inside isolated in template scope directive: {{myProperty}}', 
     restrict: "A", 
     scope: { 
      myProperty: '=' 
     } 
    }; 
}) 

चेक this fiddle: आप अपने निर्देश के लिए एक टेम्पलेट का उपयोग करने के लिए है।

+0

धन्यवाद @ रीटो, फिर v1.2 में अलग-अलग दायरे का बिंदु क्या है, अगर इसे नियंत्रक से संपत्ति प्राप्त होती है। –

+0

यह निर्देश के अंदर टेम्पलेट के बारे में है। यदि आप 'myIsolatedDirective' से स्कोप अलगाव हटाते हैं तो 'myProperty' नियंत्रक दायरे से बंधेगा। मुझे लगता है कि 1.1.x में व्यवहार का इरादा नहीं था क्योंकि वोजाता ने कहा था: "आवेदन तत्व जो या तो टेम्पलेट में या किसी अन्य निर्देश टेम्पलेट में परिभाषित किए गए हैं, को अलग-अलग दायरे नहीं मिलते हैं। सिद्धांत रूप में, किसी को भी इस व्यवहार पर भरोसा नहीं करना चाहिए, क्योंकि यह बहुत दुर्लभ है - ज्यादातर मामलों में अलग निर्देश में एक टेम्पलेट होता है। " –

+0

धन्यवाद @ रीटो या स्पष्टीकरण। –

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