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.copy
PSなぜフィドルで動作しないのですか?