6

मेरे निर्देश उपयोग कोडचुनिंदा सूची के लिए कस्टम निर्देश के लिए एनजी-चेंज को कैसे कार्यान्वित करें?

 <input-select ng-model="someModel" ng-change="someFunction()" 
    options="countries"></input-select> 

मेरे निर्देश कोड

.directive('inputSelect', function() { 
    return { 
     templateUrl: 'someTemplate.html', 
     restrict: 'E', 
     scope: { 
      ngModel: '=', 
      ngChange: '=' 
     } 
    }; 
}); 

मेरे निर्देश टेम्पलेट

<select 
      ng-model="ngModel" ng-init="ngModel " 
      ng-options="option[optionId] as option[optionName] for option in options" 
      ng-change="ngChange"> 
    </select> 

तो, जब चयनित आइटम बदल गया है, समारोह someFunction() अनंत के लिए बुलाया जा रहा है बार (हालांकि परिवर्तन एक बार किया जाता है), यह सुनिश्चित करने के लिए someFunction() प्राप्त करने के लिए क्या बदला जाना चाहिए y एक बार

(someFunction() नियंत्रक के दायरे में एक समारोह में जो निर्देश इस्तेमाल किया जा रहा है) [मैं ngChange के दायरे प्रकार के लिए & और @ का उपयोग करके देखें, somefunction() उन का उपयोग कर यदि निकाल दिया नहीं करता था। ]

उत्तर

5

आप & का उपयोग करना चाहिए जो अभिव्यक्ति के लिए प्रयोग किया जाता है और मार्कअप से आप की तरह ngChange() के बजाय ngChange केवल

मार्कअप की विधि कह सकते हैं

<select 
     ng-model="ngModel" ng-change="ngChange()" 
     ng-options="option[optionId] as option[optionName] for option in options"> 
    </select> 

कोड

scope: { 
    ngModel: '=', 
    ngChange: '&' 
} 

Example Plunkr

+0

'&' या '@' काम नहीं कर रहा है - 'कुछ फ़ंक्शन() 'को उपयोग किए जाने पर निष्पादित नहीं किया जा रहा है। –

+0

@ विश्वजीतवथकर जिस तरह से मैंने सुझाव दिया है, कोशिश करें .. अपने कोड को मैं बताता हूं ... तब तक मैं आपके लिए एक प्लंकर बनाउंगा –

+0

इसे टेम्पलेट में 'ngChange() 'बना रहा है या तो काम नहीं कर रहा है। –

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

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