Angularjs ngOption with array

ibm*_*khd 20 html-select angularjs

我想添加一个带选项AM,PM和angularjs的html选择,我需要的是拥有密钥和选项的值是相同的:

<option value="AM">AM</option>
<option value="PM">PM</option>
Run Code Online (Sandbox Code Playgroud)

我的HTML看起来像这样

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

我的控制器看起来像

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

每件事都很好.

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

$scope.ampms =["AM","PM"];
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我总能得到这个

<option value="0">AM</option>
<option value="1">PM</option>
Run Code Online (Sandbox Code Playgroud)

我想要的是使用像上面这样的数组,选项有键和值相同.

dnc*_*253 26

使用AngularJS,您无需担心选项的价值.我见过的所有选择ng-options都有0到0的值.如果您只是在寻找带有两个选项的下拉列表,那么就可以这么简单

<select ng-model="ampm" ng-options="currOption for currOption in ['AM', 'PM']"></select>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/EyBVN/1/

  • 如果表单(服务器)的目标需要字符串值而不是索引,则很重要. (4认同)

Ben*_*esh 10

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

它甚至不能被"值作为值中的(索引,值)"强制使用.

但是因为dnc253只是用他的答案打败了我(当我打字时它出现了)......你不必担心它,Angular会自动为你做这一切.