我有点困惑与Angular和ng选项。
我有一个简单的数组,我想要初始化一个选择它。但是,我想要的选项值=标签。
script.js
$scope.options = ['var1','var2','var3'];
html
<select ng-model="myselect" ng-options="o for o in options"></select>
我得到什么:
<option value="0">var1</option> <option value="1">var2</option> <option value="2">var3</option>
我想要的是:
<option value="var1">var1</option> <option value="var2">var2</option> <option value="var3">var3</option>
所以我试过:
<select ng-model="myselect2" ng-init=0 ng-options="options[k] as v for (k,v) in options"></select> <select ng-model="myselect3" ng-init=0 ng-options="b as b for b in options"></select>
(但它没有工作。)
编辑:
我的表单是外部提交的,这就是为什么我需要’var1’作为值而不是0。
你实际上在你的第三次尝试是正确的。
<select ng-model="myselect" ng-options="o as o for o in options"></select>
在这里看到一个工作示例:
http://plnkr.co/edit/xEERH2zDQ5mPXt9qCl6k?p=preview
诀窍是AngularJS将键作为数字从0到n无论如何,并更新回模型更新时。
因此,HTML将看起来不正确,但是在选择值时仍会正确设置模型。 (即AngularJS将’0’转换回’var1′)
Epokk的解决方案也有效,但是如果你以异步方式加载数据,你可能会发现它并不总是正确地更新。使用ngOptions将在范围更改时正确刷新。