我对Angular和ng-options。
ng-options
我有一个简单的数组,我想用它初始化一个选择。但是,我希望该选项的值=标签。
$scope.options = ['var1', 'var2', 'var3'];
<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将正确刷新。