我对 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 将在范围更改时正确刷新。