2014-09-11 6 views
10

से AngularJS समारोह कॉल करने के लिए मैं चयन से एक AngularJS समारोह कॉल करने की आवश्यकता:कैसे चयन> विकल्प

<select ng-model="selection" > 
<option onselect="angular.element(this).scope().functionCall('one')">one</option> 
<option onselect="angular.element(this).scope().functionCall('two')">two</option> 
<option onselect="angular.element(this).scope().functionCall('three')">three</option> 
<option onselect="angular.element(this).scope().functionCall('four')">four</option> 
</select> 

हालांकि, समारोह कभी नहीं कहा जाता हो जाता है।

नियंत्रक में,

$scope.functionCall = function(value){ 
// do stuff with value 
} 

मैं समारोह कैसे कह सकते हैं।

+0

आपको एक कस्टम निर्देश की आवश्यकता है। –

+1

$ स्कोप का उपयोग करें। चयनित नियंत्रक – Greg

उत्तर

0

यहाँ आप क्या कर सकते हैं:

एचटीएमएल

<div ng-controller="YourController"> 
    <select ng-model="selection" ng-options="choice for choice in choices"></select> 
</div> 

YourController:

$scope.choices = ["first choice", "second choice",...] 
$scope.$watch('selection', function(newVal, oldVal){ 
    switch(newVal){ 
     case 'first choice': 
      [do Some Stuff] 
      break; 
     case 'second choice': 
      [do Some Stuff] 
      break; 
     default: 
      [well, do some stuff] 
      break; 
    } 
} 

Btw: मैं जावास्क्रिप्ट में विकल्प लगाने का फैसला किया है, लेकिन क्या आप भी काम करता है था।

संपादित करें: $ घड़ी वी.एस. एनजी-परिवर्तन, see this question

+0

धन्यवाद जब आपके नियंत्रक में $ कुछ देखें।यह सहायक है। – user3779089

+0

आपके एनजी-विकल्प चयनित तत्व को इस तरह से सही तरीके से पॉप्युलेट नहीं करेंगे ... यह विकल्प में पसंद के लिए 'पसंद' विकल्प – Fedaykin

+0

वास्तव में धन्यवाद। –

26

यह अनुशंसा की जाती है कि आप उस बात के लिए ng-change उपयोग करते हैं, परिणाम सिरिल के रूप में ही हो सकता है, लेकिन कोड और अधिक पठनीय और परीक्षण योग्य, यह भी माना जाता है एक बेहतर अभ्यास:

यहाँ एक plunker कार्रवाई में यह प्रदर्शन किया गया है: http://plnkr.co/edit/7GgwN9gr9qPDgAUs7XVx?p=preview

app.controller('MainCtrl', function($scope) { 
    $scope.listOfOptions = ['One', 'Two', 'Three']; 

    $scope.selectedItemChanged = function(){ 
    $scope.calculatedValue = 'You selected number ' + $scope.selectedItem; 
    } 
}); 

और HTML:

0,123,
<select ng-options="option for option in listOfOptions" 
     ng-model="selectedItem" 
     ng-change="selectedItemChanged()"> 
</select> 

आशा है कि मदद करता है। धन्यवाद।

+0

जब मैं console.log –

+0

@A_J कोणीय का उपयोग करके फ़ंक्शन के अंदर '$ scope.selectedItem' मुद्रित करने का प्रयास कर रहा हूं, तो मुझे 'अपरिभाषित' हो रहा है, तो ऑब्जेक्ट को किसी ऑब्जेक्ट को असाइन करने की आवश्यकता होती है, फिर ng-model को किसी ऑब्जेक्ट को असाइन करने की आवश्यकता होती है। मैंने किया और यह काम किया। –

0

पहले, onselect एक कोणीय शब्द नहीं है, यह एक सामान्य जावास्क्रिप्ट कीवर्ड

आप चयन में एनजी-परिवर्तन परम उपयोग करें या नीचे की तरह इस्तेमाल करना चाहिए ..,

एचटीएमएल कोड में आप की तरह उपयोग करना पड़ता है इस।,

<select ng-model="selection" > 
<option onselect="functionCall('one')">one</option> 
<option onselect="functionCall('two')">two</option> 
<option onselect="functionCall('three')">three</option> 
<option onselect="functionCall('four')">four</option> 
</select> 

और नियंत्रक में

function functionCall(value){ 
//do stuff with value 
} 
2

एक छोटा सा सिरिल और Fedaykin जवाब पर जोड़ने के लिए:

एचटीएमएल कोड

<select ng-options="option for option in listOfOptions" 
    ng-model="selectedItem" 
    ng-change="selectedItemChanged()"> 

नियंत्रक कोड

app.controller('MainCtrl', function($scope) { 
    $scope.listOfOptions = ['One', 'Two', 'Three']; 

    $scope.selectedItemChanged = function(){ 
    console.log($scope.selectedItem); 
    } 
}); 

आप देखेंगे कि जब विकल्प का चयन बदल गया है, एक समारोह में कहा जाता हो जाता है जो आपको वर्तमान चयनित मूल्य का मूल्य देगा।

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