小编典典

带有简单数组初始化的 ng-options

all

我对 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>

(但它没有工作。)

编辑:

我的表单是在外部提交的,这就是为什么我需要 ‘var1’ 作为值而不是 0。


阅读 60

收藏
2022-07-16

共1个答案

小编典典

您实际上在第三次尝试中就正确了。

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

2022-07-16