如何获取基于其索引的每一行的selecteditem?

时间:2019-03-03 16:14:06

标签: angularjs angularjs-ng-options

Angularjs将空白值添加到html select而不是默认值

我们有一个带有行的表,其中每一行都是可编辑的。在每一行中,都有一个选择框,其中具有我们从服务器获取的预选值。 但是,使用以下代码时,会自动添加一个空白值,并且不考虑ng-model。

<select ng-if="lic.$edit" class="form-control " style="width:130px"
        ng-model="lic.license_type"
        ng-options="item.Type for item in licensetype track by item.ID" 
        required>
  <option value="">Select Type</option> 
</select>

lic.licence_type具有选定的字符串值。

licensetype是其余选项的硬编码数组。

为解决此问题,我们在单击“编辑”按钮以获取当前所选项目时添加了onclick函数,并使用当前项目的ID过滤数组。

$scope.editLic =function(arr, type, index){ 
    $scope.selectedItem = $scope.licensetype.find(function (o) { 
        return o.Type == type
    })  
}

这从本质上解决了select中的空白值。通过将ng-model设置为selectedItem而不是lic.license_type。像这样:

<select ng-if="lic.$edit" class="form-control " style="width:130px"
        ng-model="selectedItem"
        ng-options="item.Type for item in licensetype track by item.ID"
        required>
  <option value="">Select Type</option> 
</select>

虽然这解决了原始问题,但无法维护ng-model的索引,因为每一行现在都具有相同的ng-model“ selectedType”,并且每次单击编辑时都会更改。

Angular版本:1.6.2

对于上述解决方案,我的问题是:

如何根据行的索引获取所选项目?
编辑: 发布此问题之前,我已经进行了彻底搜索。这不是重复项。 这里的问题是有多个行,每个行都有一个选择。接受答案的大多数问题都有一个选择框。因此该解决方案在这里不起作用。

更新:

通过以下操作解决了这个问题:

$scope.editLic =function(arr, type, index){
  $scope.selectedItem[index] = $scope.licensetype.find(function (o) { return o.Type == type});
}


  <select ng-if="lic.$edit" class="form-control " style="width:130px"
          ng-model="selectedItem[$index]" 
          ng-options="item.Type for item in licensetype track by item.ID"
          required>
      <option value="">Select Type</option> 
  </select> 

0 个答案:

没有答案