angularjs - चयनित एनजी-विकल्प परिवर्तन करते समय मूल्य प्राप्त करें




5 Answers

जैसा कि ngChange ने कहा था कि आपको ngChange का उपयोग ngChange और ngModel ऑब्जेक्ट को अपने ngChange फ़ंक्शन पर तर्क के रूप में पास करने की आवश्यकता है

उदाहरण :

<div ng-app="App" >
  <div ng-controller="ctrl">
    <select ng-model="blisterPackTemplateSelected" ng-change="changedValue(blisterPackTemplateSelected)" 
            data-ng-options="blisterPackTemplate as blisterPackTemplate.name for blisterPackTemplate in blisterPackTemplates">
      <option value="">Select Account</option>
    </select>
    {{itemList}}     
  </div>       
</div>

js:

function ctrl($scope) {
  $scope.itemList = [];
  $scope.blisterPackTemplates = [{id:1,name:"a"},{id:2,name:"b"},{id:3,name:"c"}];

  $scope.changedValue = function(item) {
    $scope.itemList.push(item.name);
  }       
}

लाइव उदाहरण: http://jsfiddle.net/choroshin/9w5XT/4/

मेरे पास .html पृष्ठ में एक ड्रॉपडाउन सूची है,

ड्रॉप डाउन:

<select ng-model="blisterPackTemplateSelected" data-ng-options="blisterPackTemplate as blisterPackTemplate.name for blisterPackTemplate in blisterPackTemplates">
    <option value="">Select Account</option>
</select>

जब उपयोगकर्ता कोई मान चुनता है तो मैं एक क्रिया निष्पादित करना चाहता हूं। तो मेरे नियंत्रक में मैंने किया:

नियंत्रक:

$scope.$watch('blisterPackTemplateSelected', function() {
    alert('changed');
    console.log($scope.blisterPackTemplateSelected);
});

लेकिन ड्रॉपडाउन सूची में मूल्य बदलना कोड को ट्रिगर नहीं करता है: $scope.$watch('blisterPackTemplateSelected', function()

नतीजतन मैंने एक और विधि की कोशिश की: ng_change = 'changedValue()' को चुनिंदा टैग पर

तथा

समारोह:

$scope.changedValue = function() {
   console.log($scope.blisterPackTemplateSelected);
}

लेकिन blisterPackTemplateSelected का blisterPackTemplateSelected एक बच्चे के दायरे में रखा जाता है। मैंने पढ़ा है कि माता-पिता को बच्चे के दायरे तक पहुंच नहीं मिल सकती है।

ड्रॉपडाउन सूची में चयनित मान में परिवर्तन होने पर कुछ निष्पादित करने का सही / सर्वोत्तम तरीका क्या होता है? यदि यह विधि 1 है, तो मैं अपने कोड के साथ क्या गलत कर रहा हूं?




कृपया, इसके लिए ngChange निर्देश का उपयोग करें। उदाहरण के लिए:

<select ng-model="blisterPackTemplateSelected" 
        ng-options="blisterPackTemplate as blisterPackTemplate.name for blisterPackTemplate in blisterPackTemplates" 
        ng-change="changeValue(blisterPackTemplateSelected)"/>

और पैरामीटर के रूप में नियंत्रक में अपना नया मॉडल मान पास करें:

ng-change="changeValue(blisterPackTemplateSelected)"



आप एनजी-मॉडल मान को एनजी-चेंज फ़ंक्शन के माध्यम से पैरामीटर के रूप में पास कर सकते हैं:

<select 
  ng-model="blisterPackTemplateSelected" 
  data-ng-options="blisterPackTemplate as blisterPackTemplate.name for blisterPackTemplate in blisterPackTemplates" 
  ng-change="changedValue(blisterPackTemplateSelected)">
    <option value="">Select Account</option>
</select>

इसे देखे बिना अपने परिदृश्य को जानना थोड़ा मुश्किल है, लेकिन यह काम करना चाहिए।




मुझे देर हो चुकी है, लेकिन मैंने इस तरह की समस्या को हल किया है जो कि सरल और आसान है।

<select ng-model="blisterPackTemplateSelected" ng-change="selectedBlisterPack(blisterPackTemplateSelected)">
<option value="">Select Account</option>
<option ng-repeat="blisterPacks in blisterPackTemplates" value="{{blisterPacks.id}}">{{blisterPacks.name}}</option>

और एनजी-चेंज के लिए फ़ंक्शन निम्नानुसार है;

 $scope.selectedBlisterPack= function (value) {  

        console.log($scope.blisterPackTemplateSelected);

    };



मेरे पास एक ही समस्या थी और एक अनूठा समाधान मिला। यह सबसे अच्छा अभ्यास नहीं है, लेकिन यह किसी के लिए सरल / सहायक साबित हो सकता है। बस आईडी या कक्षा या अपने चुने हुए टैग पर jquery का उपयोग करें और फिर आपके पास परिवर्तन फ़ंक्शन में टेक्स्ट और मान दोनों तक पहुंच है। मेरे मामले में मैं सेल / ईजे के माध्यम से विकल्प मूल्यों में गुजर रहा हूं:

    <select id="projectSelector" class="form-control" ng-model="ticket.project.id" ng-change="projectChange(ticket)">
      <% _.each(projects, function(project) { %>
        <option value="<%= project.id %>"><%= project.title %></option>
        <% }) %>
    </select>

फिर मेरे कोणीय नियंत्रक में मेरा एनजी-चेंज फ़ंक्शन इस तरह दिखता है:

    $scope.projectChange = function($scope) {
         $scope.project.title=$("#projectSelector option:selected").text();
     };



Related