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