अद्यतन
jqLite extras methods भी विशिष्ट तत्व से जुड़े नियंत्रक पुनः प्राप्त करने के एक नियंत्रक विधि है। तो आप एनजी-मॉडल के लिए पूछ सकते हैं और नियंत्रक का नाम angular.element(el).controller('ngModel')
के रूप में भी प्राप्त कर सकते हैं।
नियंत्रक (नाम) - वर्तमान तत्व या उसके माता-पिता के नियंत्रक को पुनर्प्राप्त करता है। डिफ़ॉल्ट रूप से ngController निर्देश से जुड़े नियंत्रक को पुनर्प्राप्त करता है। यदि नाम camelCase निर्देशक नाम के रूप में प्रदान किया गया है, तो इस निर्देश के लिए नियंत्रक पुनर्प्राप्त किया जाएगा (उदा। 'NgModel')।
कोणीय भी अपने डेटा पर एक तत्व के साथ जुड़े नियंत्रक देता है। इसी प्रकार निर्देश के साथ जुड़े ngModel नियंत्रक उदाहरण $ngModelController
के माध्यम से सुलभ रूप से है। तो आप वास्तव में इसका उपयोग कर सकते हैं और जो कुछ भी कर रहे हैं उसे करने के लिए ngModel उदाहरण का उपयोग कर सकते हैं। हालांकि यह पूरी तरह से ऐसा करने का एक गैर मानक तरीका है, क्योंकि $ngModelController
अनियंत्रित है और भविष्य में संस्करणों में कार्यान्वयन में कोई गारंटी नहीं है।
एक उदाहरण कार्यान्वयन:
.directive('parentDirective', function($timeout){
return{
restrict:'E',
link:function(scope, elm){
/*Get the elements with the attribute ng-model, in your case this could just be elm.children()*/
var elms = [].slice.call(elm[0].querySelectorAll('[ng-model]'), 0);
/*get the ngModelControllerArray*/
var controllers = elms.map(function(el){
return angular.element(el).controller('ngModel');
//return angular.element(el).data('$ngModelController');
});
/*As a sample implementation i am registering a view value listener for these controller instances*/
controllers.forEach(function(ngModel){
ngModel.$viewChangeListeners.push(logViewChange.bind(null, ngModel));
});
function logViewChange(ngModel){
console.log(ngModel.$name, ngModel.$viewValue);
}
}
}
});
Plnkr
अपनी प्रतिबद्धता के लिए धन्यवाद। यह समाधान है। क्रूर हिस्सा "वापसी कोणीय.लेमेंट (एल) .डेटा ('$ ngModelController') है;"। इस पंक्ति को भी निम्नानुसार लिखा जा सकता है "वापसी कोणीय.लेमेंट (एल) .controllwe ('ngModel');"। उस संशोधन के साथ अपने Plnkr से लिंक करें http://plnkr.co/edit/shn6978dFkH3YFfkUnRy?p=preview – Christian
ओह हाँ मैं वास्तव में इस पर jqlite एक्स्ट्रा के बारे में भूल गया था। धन्यवाद। मैं अपना जवाब अपडेट करूंगा। – PSL