मुझे इस plunker में कुछ काम मिल गया है जो कुछ उपयोगकेस को कवर करता है।
फ़ंक्शन एक पैरामीटर लेगा। इस पैरामीटर में प्रत्येक दायरे में एक ही नाम होगा।
<body ng-app="MyApp">
<div ng-controller="mainCtrl">
<button ng-click="announce(specificName)">announce in main</button>
<div ng-controller="subCtrl">
<button ng-click="announce(specificName)">announce in sub</button>
</div>
</div>
</body>
आपको लगता है कि जैसे मुख्य नियंत्रक देखो:
angular.module('MyApp').controller('mainCtrl', function($scope, ItemService){
$scope.specificName = "I'm main !";
$scope.announce = function(specificName){
alert(specificName);
}
});
और बस उप नियंत्रक में "specificName" var ओवरराइड:
angular.module('MyApp').controller('subCtrl', function($scope, ItemService){
$scope.specificName = "I'm a sub !";
});
शुद्ध जे एस में समारोह कॉल करने के लिए आप कर सकते हैं प्रत्येक नियंत्रक में यह करें:
$scope.announce($scope.specificName);
संपादित करें:
मुझे अभी एहसास हुआ कि एक अन्य समाधान है जो आपकी ज़रूरत को पूरा कर सकता है। आप फ़ंक्शन साझा करने के लिए फ़ैक्टरी या सेवा का उपयोग कर सकते हैं।
कैसे सेवा दे सकता है:
myApp.service("AnnounceService",
function(){
var service = {};
service.announce = function(toAnnounce){
alert(toAnnounce);
}
return service;
}
);
कैसे अपने नियंत्रक तरह दिखेगा:
angular.module('MyApp').controller('subCtrl', function($scope, AnnounceService){
$scope.announce = AnnounceService.announce;
$scope.specificName = "I'm a sub !";
//Equivalent
$scope.announce($scope.specificName);
AnnounceService.announce($scope.specificName);
});
यह एक ही बात के रूप में आप प्रत्येक नियंत्रक में specificName घोषित करने और करने के लिए इसे पारित करने की जरूरत है कार्यक्रम। लेकिन समारोह आपके आवेदन के किसी भी हिस्से में प्रयोग योग्य होगा।
अंत नहीं समारोह में सार भाग लेकिन प्रत्येक नियंत्रक में अपने वर का नाम: तुम बस सेवा और
विवरण इंजेक्षन की जरूरत है। पारंपरिक नामकरण का एक प्रकार।
यदि यह var राज्य संबंधित है तो आप इसे राज्य परिभाषा में जोड़ सकते हैं। (यदि ऐसा है तो मैं आपको एक उदाहरण देने का प्रयास कर सकता हूं।)
मैं भी किसी अन्य को एक पूर्ण $ दायरा देने की सलाह नहीं देता हूं। यह कोणीय में एक अच्छा अभ्यास नहीं है।
इस समस्या को हल करने की उम्मीद है, या पर्याप्त सुराग दें।
अधिक विशिष्ट चीज़ पूछने के लिए स्वतंत्र महसूस करें, मैं इसे आपकी आवश्यकताओं के अनुरूप अनुकूलित करने के लिए उत्तर संपादित करूंगा।
क्या आप अपने फ़ंक्शन का कुछ उपयोग केस जोड़ सकते हैं? (क्या आप इसे किसी अन्य फ़ंक्शन के अंदर ng-click के साथ उपयोग कर रहे हैं?) ... – Okazari
आप हमेशा नियंत्रकों के बीच संवाद करने के लिए कारखानों और ईवेंट एमिटर का उपयोग कर सकते हैं। मेरे पास एक मेनू नियंत्रक के साथ एक समान चीज है जो कुछ लॉग इन या आउट होने पर हर बार अद्यतन हो जाती है, या शॉपिंग टोकरी में कुछ जोड़ती है .... मुझे नहीं पता कि यह एक ही पंक्ति के साथ है या नहीं? –