2017-06-07 1 views
0
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
<script> 
var app = angular.module('myApp', []); 
app.controller('myctrl', function($scope) { 
    $scope.state = [{name:'TamilNadu', code:1}, {name:'Kerala', code:2}, {name:'Karnataka', code:3}]; 
    $scope.onChange = function() { 
      var a = this.drop.state; } 
}); 
</script> 
<body> 

<div ng-app="myApp" ng-controller="myctrl"> 
State : 
<select id="stat" ng-model="drop.state" ng-change="onChange()"> 
<option ng-repeat = "x in state"> {{x.name}} </option> 
<select> 
</div> 
</body> 

Dans ce code, je peux être en mesure d'obtenir la valeur sélectionnée dans la zone de texte de la variable a. Maintenant, j'ai besoin d'obtenir la valeur de code du nom sélectionné. Est-il possible d'utiliser indexof(). Et j'en ai besoin en dynamique ie, quand l'état est sélectionné, j'ai besoin de ce 'code' correspondant de l'ensemble du tableau.comment utiliser indexof dans le tableau défini dans angularjs

Répondre

0

vous pouvez assigner code en tant que valeur à option

<option ng-repeat = "x in state" ng-value="x.code"> {{x.name}} 

Démo

var app = angular.module('myApp', []); 
 
app.controller('myctrl', function($scope) { 
 
    $scope.drop = {} 
 
    $scope.state = [{name:'TamilNadu', code:1}, {name:'Kerala', code:2}, {name:'Karnataka', code:3}]; 
 
    $scope.onChange = function() { 
 
      var a = $scope.drop.state 
 
      console.log(a) 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myctrl"> 
 
State : 
 
<select id="stat" ng-model="drop.state" ng-change="onChange()"> 
 
<option ng-repeat = "x in state" ng-value="x.code"> {{x.name}} </option> 
 
</select> 
 
</div>

+0

pour être plus précis angulaire, il devrait être Tik

+0

yep mis à jour Merci –

+0

Merci pour la solution –

0

Même si l'autre réponse est valide, c'est la bonne façon de s'y prendre :

<select id="stat" ng-model="drop.state" ng-options="x.code as x.name for x in state" ng-change="onChange()"> 
    <option value="">Select a value</option> 
</select> 

Si le but de la modification ng était d'obtenir le code d'état, de cette façon, il n'est pas nécessaire. Votre modèle ng sera égal au code d'état sélectionné.

0

Vous pouvez lier des données à une seule propriété et accéder aux deux. avec ng-options préféré.

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
 
<script> 
 
    var app = angular.module('myApp', []); 
 
    app.controller('myctrl', function($scope) { 
 
    $scope.state = [{ 
 
     name: 'TamilNadu', 
 
     code: 1 
 
    }, { 
 
     name: 'Kerala', 
 
     code: 2 
 
    }, { 
 
     name: 'Karnataka', 
 
     code: 3 
 
    }]; 
 
    $scope.onChange = function() {  
 
    alert(this.drop.state.name); 
 
    alert(this.drop.state.code); 
 
    } 
 
    }); 
 
</script> 
 

 
<body> 
 

 
    <div ng-app="myApp" ng-controller="myctrl"> 
 
    State : 
 
    <select id="stat" ng-model="drop.state" ng-options= "x as x.name for x in state" ng-change="onChange()"> </select> 
 

 
</div> 
 
</body>

1
<option value="{{x}}" ng-repeat = "x in state"> {{x.name}} </option> 

Si vous ajoutez la valeur de votre option, vous pouvez obtenir l'objet complet, et l'accès au code et la valeur