Angularjs <;选择>;使用ngRepeat,选择第一个元素时不选择项目

Angularjs <;选择>;使用ngRepeat,选择第一个元素时不选择项目,angularjs,angularjs-ng-repeat,angularjs-select,Angularjs,Angularjs Ng Repeat,Angularjs Select,在标记内使用ngRepeat和ngSelected时,我面临一个问题,这是代码: <select ng-model="y.SkuId" ng-change="y.Edited=true;"> <option ng-repeat="s in skus" ng-selected="s.Key == y.SkuId" value="{{s.Key}}">{{s.Value}} </option> </select> 更新2 带错误示例的

标记内使用
ngRepeat
ngSelected
时,我面临一个问题,这是代码:

<select ng-model="y.SkuId" ng-change="y.Edited=true;">
    <option ng-repeat="s in skus" ng-selected="s.Key == y.SkuId" value="{{s.Key}}">{{s.Value}}
    </option>
</select>
更新2

带错误示例的plnkr

尝试在select元素中使用ngOptions,而不是ngRepeat指令:

<select ng-model="d.SkuId"
        ng-options="s.Key as s.Value for s in skus">
</select>

plunker:

使用
ng attr value=“s.Key”
而不是
value=“{{s.Key}}”

试一试

请注意,差异只是值:

<select ng-model="k.Key" >
  <option ng-repeat="s in skus" ng-selected="s.Key === k.Key" 
     ng-attr-value="s.Key">{{s.Value}}</option>
</select>

{{s.Value}}
使用{{}的表达式计算时间和ng repeat编译时间并不像人们想象的那样是同步的。这解释了为什么只选择最后一个


虽然根据,您可以对ng选项使用ng repeat,但在处理对象而不是ID时,您可能希望使用
select as
语法。此外,您可能希望这样做还有其他性能原因

是否可以包含您正在迭代的SKU变量的数据?[{“键”:1,“值”:“001”},{“键”:2,“值”:“002”}]是否已初始化对象?如果使用整数值代替对象工作,则可能需要创建plnkrTest。我已经面临类似的挑战problem@bhantoly是初始化的,是一个表的upper ng repeater的元素。这个解决方案工作得很好,我选择它作为Answare,因为除了解释发生了什么之外
<select ng-model="d.SkuId"
        ng-options="s.Key as s.Value for s in skus">
</select>
<select ng-model="k.Key" >
  <option ng-repeat="s in skus" ng-selected="s.Key === k.Key" 
     ng-attr-value="s.Key">{{s.Value}}</option>
</select>