如何在AngularJS中设置的阵列中使用索引


<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>

在此代码中,我可以从变量a中的文本框中获取所选值。现在,我需要获取所选名称的代码值。是否可以使用indexof((。我需要在动态IE中进行它,当选择"状态"时,我需要从数组集中进行对应的"代码"。

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

如果您在选项上添加值,则可以获取完整的对象,并访问代码和值

您可以将code分配给option

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

演示

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>

即使另一个答案有效,这是正确的方法:

<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>

如果NG变更的目的是获取状态代码,则不需要。您的NG模型将等于选定的状态代码。

您可以将数据绑定到单个属性。使用首选ng-options

<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>

最新更新