2

angular では、Track by を使用して、参照ではなく値で選択を追跡することは、必要に応じて優れた機能です。しかし、配列を後ろに切り替えて、選択したオブジェクトIDが新しいIDと一致するとしましょう。選択も変更したい

再評価を強制するにはどうすればよいですか?

HTML:

    <select ng-options="option.id for option in collection track by option.id" ng-model="selectedObject"></select>
    <button ng-click="updateCollection()">Update</button>

JS:

    $scope.collection = [{
            id: 1,
            value: 0
        }, {
            id: 2,
            value: 0
        }, {
            id: 3,
            value: 0
        }];

    $scope.selectedObject = $scope.collection[0];

    $scope.updateCollection = function () {
        var newColl = [{
            id: 1,
            value: 100
        }, {
            id: 2,
            value: 200
        }, {
            id: 3,
            value: 300
        }];

        $scope.collection = newColl;

を選択Id 2して更新すると、selectedObjectはまだ古いid:2 value:0ので、直接 に変更したいとしid:2 value:200ます。

https://jsfiddle.net/IngoVals/p4ye3uaq/

angular.copyPSなぜフィドルで動作しないのですか?

4

1 に答える 1