我使用 Angular 1.5。我有两个选择,我需要根据第一个选择选项的索引更新第二个选择。
有没有一种简单的方法可以选择选项的索引?就像从0
到5
一样.
我的第一个选择是:
<select class="form-control" name="idEtablissement" ng-model="infosEtab.idEtablissement" ng-change="updateContrats()"
ng-options='item.id as item.name for item in listeEtablissement'>
</select>
我需要这样的东西:
// return -1, listeEtablissement is [{id: 2, name: 'Test'}, {...}]
alert($scope.listeEtablissement.indexOf($scope.infosEtab.id));
$listeEtablissement是:
[{id: 2, name: 'Test'}, {id: 5, name: 'Test 2'}]
但是我需要索引,例如 0 或 1。
编辑
好的,我将使用Javascript方法,最简单的方法:
$scope.updateContrats = function() {
var index = document.getElementById('idEtablissement').selectedIndex;
// ....
}
你应该通过原生 JavaScript 使用array.findIndex();
来做到这一点,就像在这个可运行的演示小提琴中一样。
- array.findindex(( 的 MDN 引用
视图
<div ng-controller="MyCtrl">
<select class="form-control"
name="idEtablissement"
ng-model="infosEtab.idEtablissement"
ng-change="updateContrats()"
ng-options='item.id as item.name for item in listeEtablissement'>
</select>
</div>
AngularJS应用程序
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', function($scope) {
$scope.selectedIndex = null;
$scope.listeEtablissement = [{
id: 2,
name: 'Test'
}, {
id: 5,
name: 'Test 2'
}];
$scope.updateContrats = function() {
$scope.selectedIndex = $scope.listeEtablissement.findIndex(function(item) {
return item.id === $scope.infosEtab.idEtablissement
});
}
});
更改
ng-options
自
index as item.name for (index, item) in listeEtablissement