2014-04-08 10 views
5

मैं इस परिदृश्य है: पृथक गुंजाइश के साथ एक transclude निर्देश जो एक नियंत्रक उस में संलग्न है:पहुँच निर्देश के नियंत्रक

angular.module('app', []) 
.directive('hello', function() { 

    return { 

    controller: function($scope) { 
     $scope.hello = "Hello World"; 
    }, 

    restrict: 'E', 
    replace: true, 
    transclude: true, 
    template: '<div class="hello" ng-transclude></div>', 
    scope: {} 
    }; 

}); 

मैं आगे देख रहा हूँ transcluded तत्वों से निर्देश के नियंत्रक का उपयोग करने की :

<hello> 
    <h1>Hello Directive</h1> 

    <p>{{ hello }}</p> 
</hello> 

हालांकि ऐसा संभव नहीं लगता है। मैंने hello$parent और $$nextSibling के साथ पहुंचने का प्रयास किया।

क्या इस परिदृश्य का कोई समाधान है? मैं निर्देशक उदाहरण के आसपास नियंत्रक को रैपर में रखने में सक्षम नहीं हूं। http://codepen.io/jviotti/pen/ktpbE?editors=101

उत्तर

2

आप हैलो निर्देश में एक बाध्यकारी रूप में चर पारित करने के लिए की जरूरत है, और यह भी अलग गुंजाइश के भाग के रूप में शामिल हैं:: http://codepen.io/anon/pen/yoCkp

अधिक जानकारी

मैं इस व्यवहार को प्रदर्शित करने के लिए एक codepen बनाया यहाँ: Confused about Angularjs transcluded and isolate scopes & bindings

संपादित करें:

मूल उदाहरण में, टेम्पलेट की उम्मीद माता पिता जड़ गुंजाइश, बू में {{हैलो}} वैरिएबल यह वास्तव में हैलो निर्देशक दायरे में है। वास्तव में, निर्देश में खाली पृथक दायरा का अर्थ है कि इसे अपने माता-पिता से कोई गुंजाइश चर नहीं मिलेगा। तो उपरोक्त परिवर्तन क्या रूट रूट से निर्देश में (गैर मौजूद) हैलो वैरिएबल मार्ग में है, और उसके बाद मान सेट करता है।

इसे और अधिक स्पष्ट करने के लिए, आप इसे देख सकते हैं: http://codepen.io/anon/pen/pJEqjq - आप देखेंगे कि नियंत्रक $rootScope.hello सेट कर रहा है और यह भी काम करता है। यद्यपि यह सलाह नहीं दी जाती है क्योंकि विभिन्न नियंत्रकों में रूटस्कोप चर पर निर्भर होने से गन्दा हो सकता है।

+0

गैर-कामकाजी उदाहरण में, टेम्पलेट अपेक्षा करता है कि {{hello}} चर मूल रूट दायरे में है, लेकिन यह वास्तव में हैलो निर्देशक दायरे में है। – goldins

+0

https://www.airpair.com/angularjs/posts/transclusion-template-scope-in-angular- डायरेक्टिव्स पर आलेख ने मुझे यह समझने में सहायता की कि यह इस तरह क्यों काम करता है। – sven

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