来自 jquery 的 index() 的角度等价物



我使用 Angular 1.5。我有两个选择,我需要根据第一个选择选项的索引更新第二个选择。

有没有一种简单的方法可以选择选项的索引?就像从05一样.

我的第一个选择是:

<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

最新更新