मैं कोणीय निर्देशों के लिए काफी नया हूं, और मुझे यह करने में बहुत परेशानी हो रही है जो मैं चाहता हूं। यहाँ की मूल बातें है कि मैं क्या है:एंगुलरजेएस निर्देश: टेम्पलेट के भीतर मूल दायरे से कॉल विधि
नियंत्रक:
controller('profileCtrl', function($scope) {
$scope.editing = {
'section1': false,
'section2': false
}
$scope.updateProfile = function() {};
$scope.cancelProfile = function() {};
});
निर्देशक:
directive('editButton', function() {
return {
restrict: 'E',
templateUrl: 'editbutton.tpl.html',
scope: {
editModel: '=ngEdit'
}
};
});
टेम्पलेट (editbutton.tpl.html):
<button
ng-show="!editModel"
ng-click="editModel=true"></button>
<button
ng-show="editModel"
ng-click="updateProfile(); editModel=false"></button>
<button
ng-show="editModel"
ng-click="cancelProfile(); editModel=false"></button>
HTML:
<edit-button ng-edit="editing.section1"></edit-button>
यदि यह स्पष्ट नहीं है, तो मैं <edit-button>
टैग को तीन अलग-अलग बटनों के साथ रखना चाहता हूं, प्रत्येक जो भी स्कोप संपत्ति ng-edit
में पारित हो जाती है। क्लिक करने पर, उन्हें उस संपत्ति को बदलना चाहिए और फिर उपयुक्त स्कोप विधि को कॉल करना चाहिए।
जिस तरह से यह अब, बटन पर क्लिक सही ढंग से $scope.editing
के मूल्यों में परिवर्तन है, लेकिन updateProfile
और cancelProfile
तरीकों काम नहीं करते। मैं निर्देशों का सही तरीके से उपयोग करने के आधार पर आधार से दूर हो सकता हूं, लेकिन मुझे जो कुछ करने की कोशिश कर रहा है उसे पूरा करने में मेरी सहायता के लिए मुझे ऑनलाइन उदाहरण खोजने में परेशानी हो रही है। किसी भी सहायता की सराहना की जाएगी।
ग्रेट, धन्यवाद। मैं आपके पहले उदाहरण का उपयोग करने के इच्छुक हूं, क्योंकि दोनों विधियां हमेशा निर्देशों में समान होंगी और यह बाहरी HTML को कम कर देगी। आप क्या कहते हैं कि दूसरा तरीका "बेहतर तरीका" है? –
@futurityverb, दूसरी विधि अधिक सामान्य है। यदि आप निर्देश के उदाहरण को थोड़ा अलग व्यवहार के साथ चाहते हैं, तो आप बस एक अलग विधि में गुजर सकते हैं जिसे बुलाया जाना चाहिए। साथ ही, यदि आप अन्य निर्देशों के अंदर अपना निर्देश घोंसला शुरू करते हैं, तो '$ parent' अब नियंत्रक के दायरे को संदर्भित नहीं कर सकता है, लेकिन कुछ अन्य मध्यस्थता का दायरा भी देख सकता है। – Jerrad
मुझे सही दिशा में धक्का दिया, लेकिन क्या होगा यदि मैं आपके दूसरे उदाहरण का उपयोग करके विधियों को तर्क देना चाहता हूं? –