【问题标题】:What is the purpose of "track by" on "ng-options"“ng-options”上“track by”的目的是什么
【发布时间】:2014-11-07 18:41:25
【问题描述】:

在使用 Angular 1.3 时,ng-options 中的 trackexpr(track by)的用途是什么?

在 Angular 1.2 中,此表达式更改了生成选项上的 value="" 表达式,以匹配集合中每个项目的 trackexpr 的结果。根据这个 jsfiddle:http://jsfiddle.net/3fzkym3m/,Angular 1.3 中不再是这种情况。现在选项只有增量值。

在 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 之间会发生这种变化?

【问题讨论】:

标签: angularjs angularjs-ng-options angularjs-track-by


【解决方案1】:

根据 AngularJS 的 GitHub 存储库上的这个问题,这似乎是 Angular 1.3 中所做更改的意外副作用。 https://github.com/angular/angular.js/issues/9592。根据那里的讨论,听起来他们打算将行为恢复到 Angular 1.2 中的方式。

【讨论】:

    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    相关资源
    最近更新 更多