Dra*_*agu 185 angularjs ng-grid ng-options
我对Angular和ng-options.有点困惑.
我有一个简单的数组,我想用它初始化一个选择.但是,我希望选项值=标签.
$scope.options = ['var1', 'var2', 'var3'];
Run Code Online (Sandbox Code Playgroud)
<select ng-model="myselect" ng-options="o for o in options"></select>
Run Code Online (Sandbox Code Playgroud)
我得到了什么:
<option value="0">var1</option>
<option value="1">var2</option>
<option value="2">var3</option>
Run Code Online (Sandbox Code Playgroud)
我想要的是:
<option value="var1">var1</option>
<option value="var2">var2</option>
<option value="var3">var3</option>
Run Code Online (Sandbox Code Playgroud)
所以我尝试过:
<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>
Run Code Online (Sandbox Code Playgroud)
(但它不起作用.)
我的表单是外部提交的,这就是为什么我需要'var1'作为值而不是0.
Jam*_*ies 299
你在第三次尝试中确实让它变得正确.
<select ng-model="myselect" ng-options="o as o for o in options"></select>
Run Code Online (Sandbox Code Playgroud)
请参阅此处的工作示例:http: //plnkr.co/edit/xEERH2zDQ5mPXt9qCl6k?p = preview
诀窍在于AngularJS无论如何都将键写为从0到n的数字,并在更新模型时进行转换.
因此,HTML看起来不正确,但在选择值时仍会正确设置模型.(即AngularJS会将'0'翻译回'var1')
Epokk的解决方案也有效,但是如果您异步加载数据,您可能会发现它并不总是正确更新.当范围更改时,使用ngOptions将正确刷新.
Epo*_*okK 34
您可以使用ng-repeat具有option这样的:
<form>
<select ng-model="yourSelect"
ng-options="option as option for option in ['var1', 'var2', 'var3']"
ng-init="yourSelect='var1'"></select>
<input type="hidden" name="yourSelect" value="{{yourSelect}}" />
</form>
Run Code Online (Sandbox Code Playgroud)
当您提交时,您form可以获得隐藏的输入值.
iPi*_*rat 20
你可以用类似的东西
<select ng-model="myselect">
<option ng-repeat="o in options" ng-selected="{{o==myselect}}" value="{{o}}">
{{o}}
</option>
</select>
Run Code Online (Sandbox Code Playgroud)
使用ng-selected,如果预填充了myselect,则会预先选择该选项.
我更喜欢这种方法而不是ng-options,因为ng-options只适用于数组.ng-repeat也适用于类似json的对象.
Ida*_*a N 20
如果您按以下方式设置选择:
<select ng-model="myselect" ng-options="b for b in options track by b"></select>
Run Code Online (Sandbox Code Playgroud)
你会得到:
<option value="var1">var1</option>
<option value="var2">var2</option>
<option value="var3">var3</option>
Run Code Online (Sandbox Code Playgroud)
工作小提琴:http://jsfiddle.net/x8kCZ/15/
Too*_*kit 10
<select ng-model="option" ng-options="o for o in options">
Run Code Online (Sandbox Code Playgroud)
更改后$ scope.option将等于'var1',即使你在生成的html中看到value ="0"
| 归档时间: |
|
| 查看次数: |
178887 次 |
| 最近记录: |