我对 Angular 有点困惑ng-options
.
我有一个简单的数组,我想用它初始化一个选择。但是,我想要选项值=标签。
脚本.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>
(但没有成功。)
Edit:
我的表单是从外部提交的,这就是为什么我需要“var1”作为值而不是 0。
实际上,您在第三次尝试中就正确了。
<select ng-model="myselect" ng-options="o as o for o in options"></select>
请参阅此处的工作示例:http://plnkr.co/edit/xEERH2zDQ5mPXt9qCl6k?p=preview http://plnkr.co/edit/xEERH2zDQ5mPXt9qCl6k?p=preview
诀窍是 AngularJS 无论如何都会将键写为从 0 到 n 的数字,并在更新模型时转换回来。
因此,HTML 看起来不正确,但在选择值时模型仍会正确设置。(即 AngularJS 会将 '0' 翻译回 'var1')
Epokk 的解决方案也有效,但是如果您异步加载数据,您可能会发现它并不总是正确更新。当范围更改时,使用 ngOptions 将正确刷新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)