ng-options
使用 Angular 1.3 时trackexpr (track by) 的目的是什么?
在 Angular 1.2 中,此表达式更改了value=""
生成选项上的表达式,以匹配集合中每个项目的 trackexpr 的结果。在 Angular 1.3 中不再是这种情况,根据这个 jsfiddle:http: //jsfiddle.net/3fzkym3m/。现在选项只有增量值。
在 Angular 1.2 中,生成的选项列表是:
<select ng-options="item.text for item in data track by item.value" ng-model="selectedItem" class="ng-pristine ng-valid">
<option value="" class=""> - Select item - </option>
<option value="4">item1</option>
<option value="12">item2</option>
<option value="11">item3</option>
<option value="19">item4</option>
<option value="17">item5</option>
<option value="26">item6</option>
</select>
在 Angular 1.3 中,生成的选项列表是:
<select ng-options="item.text for item in data track by item.value" ng-model="selectedItem" class="ng-pristine ng-untouched ng-valid">
<option value="" class=""> - Select item - </option>
<option value="0">item1</option>
<option value="1">item2</option>
<option value="2">item3</option>
<option value="3">item4</option>
<option value="4">item5</option>
<option value="5">item6</option>
</select>
Angular 是否仍在使用 track by 来匹配源集合和所选项目之间的对象?这样做还有性能优势吗?为什么在 Angular 1.2 和 1.3 之间会发生这种变化?