मैं अलग-अलग दायरे का उपयोग किए बिना एक निर्देश के भीतर से पैरेंट स्कोप पर किसी फंक्शन को कॉल करने का तरीका नहीं खोज सकता। मुझे पता है कि अगर मैं अलग-अलग दायरे का उपयोग करता हूं, तो मैं अभिभावक के कार्यक्षेत्र में फ़ंक्शन का उपयोग करने के लिए अलग-थलग "&" का उपयोग कर सकता हूं, लेकिन आवश्यक नहीं होने पर अलग-अलग गुंजाइश का उपयोग करना। निम्नलिखित HTML पर विचार करें:
<button ng-hide="hideButton()" confirm="Are you sure?" confirm-action="doIt()">Do It</button>
इस सरल उदाहरण में, मैं एक जावास्क्रिप्ट पुष्टिकरण संवाद दिखाना चाहता हूं और केवल doIt () को कॉल करना चाहता हूं यदि वे पुष्टिकरण संवाद में "ओके" पर क्लिक करते हैं। यह एक अलग दायरे का उपयोग करके सरल है। निर्देश इस तरह दिखेगा:
.directive('confirm', function () {
return {
restrict: 'A',
scope: {
confirm: '@',
confirmAction: '&'
},
link: function (scope, element, attrs) {
element.bind('click', function (e) {
if (confirm(scope.confirm)) {
scope.confirmAction();
}
});
}
};
})
लेकिन समस्या यह है, क्योंकि मैं अलग-अलग गुंजाइश का उपयोग कर रहा हूं, ऊपर के उदाहरण में एनजी-छिपाना अब माता-पिता के दायरे के खिलाफ निष्पादित नहीं होता है , बल्कि अलग-अलग दायरे में होता है (क्योंकि किसी भी निर्देश पर एक अलग-अलग गुंजाइश का उपयोग करने से उस तत्व पर सभी निर्देशों का कारण बनता है) पृथक स्कोप का उपयोग करें)। यहां उपरोक्त उदाहरण का एक jsFiddle है जहां एनजी-छिपाने काम नहीं कर रहा है। (ध्यान दें कि इस फ़ाइल में, जब आप इनपुट बॉक्स में "हां" टाइप करते हैं, तो बटन को छिपा देना चाहिए।)
विकल्प एक पृथक दायरे का उपयोग नहीं करना होगा , जो वास्तव में मैं वास्तव में यहां चाहता हूं क्योंकि इस निर्देश के दायरे को अलग करने की कोई आवश्यकता नहीं है। मेरे पास एक ही समस्या है, अगर मैं इसे अलग-थलग दायरे में पास नहीं करता तो मैं पैरेंट स्कोप पर एक विधि कैसे कहूं ?
यहाँ एक jsfiddle है जहां मैं अलग-अलग गुंजाइश का उपयोग नहीं कर रहा हूं और एनजी-छिपाना ठीक काम कर रहा है, लेकिन निश्चित रूप से, पुष्टिकरण () के लिए कॉल काम नहीं करता है, और मुझे नहीं पता कि यह कैसे काम करता है।
कृपया ध्यान दें, मैं वास्तव में जिस उत्तर की तलाश कर रहा हूं वह यह है कि एक अलग दायरे का उपयोग किए बिना बाहरी दायरे पर फ़ंक्शन को कैसे कॉल किया जाए। और मुझे इस पुष्टिकरण संवाद को दूसरे तरीके से बनाने में कोई दिलचस्पी नहीं है, क्योंकि इस सवाल का बिंदु यह पता लगाना है कि बाहरी दायरे में कॉल कैसे किया जाए और अभी भी माता-पिता के दायरे के खिलाफ अन्य निर्देश काम करने में सक्षम हैं।
वैकल्पिक रूप से, मुझे उन समाधानों के बारे में सुनने में दिलचस्पी होगी जो एक अलग दायरे का उपयोग करते हैं यदि अन्य निर्देश अभी भी मूल दायरे के खिलाफ काम करेंगे , लेकिन मुझे नहीं लगता कि यह संभव है।