Bou*_*uke 3 javascript angularjs ng-options
我有一个ng-options使用HTML select元素定义的列表,例如:
<select
required="required"
ng-model="vm.selectedOption"
ng-options="item.name as item.label for item in vm.options">
<option value="">Select an option</option>
</select>
Run Code Online (Sandbox Code Playgroud)
但是这会产生以下HTML:
<option value="string:VALUE" label="Option Name">Option Name</option>
Run Code Online (Sandbox Code Playgroud)
我正在使用Angular 1.4.8版,有没有人有解决方案如何解决string:问题或者至少可以向我解释为什么会发生这种情况?
该vm.options数组如下所示:
[
{
"name": "INFILL_AUTOMATIC",
"label": "Automatic"
},
{
"name": "INFILL_GRID",
"label": "Grid"
}
]
Run Code Online (Sandbox Code Playgroud)
//编辑:
记录时vm.selectedOption我只看到正确的值.所以ng-model事实上确实有正确的价值.但是为什么Angular给出了默认的value然后这个前缀,是否使用这个前缀来定义ng-model或者什么的"类型" ?
这种行为记录在角度更改日志中,作为Angular 1.4-beta.0的重大变化. https://github.com/angular/angular.js/blob/master/CHANGELOG.md#breaking-changes-17
基本上,为了保留内部的重复检查ng-options,如果提供了原始值列表ng-options,则将值的类型添加到该值之前,以便创建要跟踪的唯一哈希键(这与早期版本的角度不同,后者将跟踪通过索引或集合中项目的键).
在实践中,这不应该影响大多数用法ng-options.如果保留value下拉列表的参数很重要,则可以使用track by参数in ng-options来提供用于重复跟踪的备用密钥.
请注意,这不同于ng-repeat,在ng-repeat使用这种方法,因为它会影响到重复元素的行为不能产生一个代理键.因此,如果传递重复列表ng-repeat而没有track by子句,ng-repeat则会产生错误而不呈现项目,ng-options从而能够呈现列表.
| 归档时间: |
|
| 查看次数: |
3533 次 |
| 最近记录: |