AngularJS:将选项添加到选择而不选择它

AngularJS: adding option to a select without selecting it?

本文关键字:选择 添加 选项 AngularJS      更新时间:2023-09-26

我有一个带有选择的表单,通过ng-options生成并与ng模型挂钩。此选择通过 ng-change 调用函数。
在此函数中,我从选择中删除所选选项,并将引用的ng模型中的值重置为默认值。
稍后我想将此选项添加回选择中,这工作正常,但是当将选项添加到选择时,它会自动选择它,而不是已经选择的默认值。
这似乎是在添加选项的函数完成并且 angular 正在运行其内部$apply函数之后发生的。
如何保持默认值处于选中状态?

.html:

<select ng-model="selectedItem" ng-options="item.name for item in allItems" ng-change="selectItem(selectedItem)">
  <option value="">default</option>
</select>

Angularjs:

$scope.selectItem = function(selectedItem) {
  $scope.allItems.splice( $scope.allItems.indexOf(selectedItem), 1 );
}
$scope.addItem = function(item) {
  // $scope.selectedItem == "";
  $scope.allItems.push(item);
  // $scope.selectedItem == "";
}

您的 ng 模型定义了所选内容。因此,当您再次向选择选项添加新值时,请尝试为其分配默认值,看看它是否有效。

编辑:请记住,它必须是0(零),而不是" "。

而不是

$scope.selectedItem = ""

尝试分配零,例如

$scope.selectedItem = 0

这是一个有效的小提琴演示。