Angularjs:获取select标签中所选对象的索引

时间:2016-10-25 08:43:06

标签: angularjs

我试图获取<select>所选项目的索引,如下所示:

<select class="form-control" id="field_Mois" name="mois"
        ng-model="vm.currentMois"
        ng-options="mois as mois.libelle for mois in vm.allMoisForAnnee track by mois.id"
        ng-change= "vm.moisChanged(vm.currentMois)">
</select>

vm.moisChanged = function(mois){
    var i = vm.allMoisForAnnee.indexOf(mois);
}

但我总是得到-1。我不明白为什么 如果有人可以帮我这个......

3 个答案:

答案 0 :(得分:1)

它返回-1,因为在数组中找不到您传递的对象,请检查实际传递给控制器​​函数的内容。

确保vm.currentMois有一些对象

<强> DEMO

答案 1 :(得分:1)

试试这个

vm.moisChanged = function(mois){
    var i = vm.allMoisForAnnee.map(function(obj, index) {
        if(obj.libelle == mois.libelle) {
            return index;
        }
    }).filter(isFinite);
}

答案 2 :(得分:0)

首先,您不需要将值传递给ng-change函数,因为模型已连接到视图&amp;控制器,您可以通过控制器内部的函数实现中的'vm.currentMois'来访问它。

您尝试在该功能中执行的操作不正确。 indexOf()方法返回字符串中第一次出现指定值的位置。

如果要查找所选项目的索引,只需循环查找即可。

vm.moisChanged = function(mois){
      var i;
      angular.forEach(vm.allMoisForAnnee, function(item){
        if(mois.id==item.id){
          i = item;
          console.log(i);
          return false;
        }
      })
    }