4

ng-optionsAngular 1.3 を使用する場合の 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 はまだトラック バイを使用していますか? これを行うことによるパフォーマンス上の利点はまだありますか? Angular 1.2 と 1.3 の間でこれが変更されたのはなぜですか?

4

1 に答える 1

1

AngularJS の GitHub リポジトリに関するこの問題に基づくと、これは Angular 1.3 で行われた変更の意図しない副作用であったようです。https://github.com/angular/angular.js/issues/9592 . そこでの議論によると、動作を Angular 1.2 の状態に戻すつもりのようです。

于 2014-11-07T20:48:47.200 に答える