一尘不染

带数组的AngularJS ngOption

angularjs

我想用angularjs添加带有选项AM,PM的html select,我需要的是键和选项的值相同:

<option value="AM">AM</option>
<option value="PM">PM</option>

我的HTML看起来像这样

<select ng-model="ampm" ng-options="k as v for (k , v) in ampms"></select>

我的控制器看起来像

  $scope.ampm = (new Date().getHours()) >= 12 ? 'PM' : 'AM';
  $scope.ampms ={"AM":"AM","PM":"PM"};

而且一切正常。

我的问题是为什么我在使用数组(尝试过ng-options中的所有选项)时不能拥有相同的东西

$scope.ampms =["AM","PM"];

无论我做什么我总是得到这个

<option value="0">AM</option>
<option value="1">PM</option>

我想要的是使用带有选项的上述数组,其键和值相同。


阅读 158

收藏
2020-07-04

共1个答案

一尘不染

这是Angular中ng-
options的默认行为。如果您未指定键名,则angular将自动选择使用索引而不是键。可以在Angular的Github存储库中的/src/ng/directives/select.js中的405行上看到做到这一点的代码。

它甚至不能通过“值作为值(索引,值)的值”来强制执行。

但是,由于dnc253用他的答案打败了我(它在我键入时显示)…您不必担心,Angular会自动为您完成所有操作。

2020-07-04