forループでデータを通過してマージする必要があります。配列全体を置き換えると、オブジェクト参照が置き換えられるため、行った変更はすべて失われます。
もう1つのオプションは、選択を別の配列または辞書に保持し、配列を置き換えた後にプロパティを再マップすることです。ここでは、選択配列に変更が保持されるように、参照型を使用する必要があることに注意してください。
[疑似コード] のように:
// a dictionary of reference types (IMPORTANT that they are objects!)
// to hold selection data.
var selections = {
'Name1' : { value: 'selection' },
'Name2': { value: 'selection2' }
}
$scope.getMyData = function () {
// do whatever to get your data here.
$scope.myData = [
{ name: 'Name1' },
{ name: 'Name2' }
];
// update your objects in your array.
for(var i = 0; i < $scope.myData.length; i++) {
var data = $scope.myData[i];
var selection = selections[data.name];
if(selection) {
data.selection = selection;
}
}
};
// initial load
$scope.getMyData();
// your test interval
setInterval(function () {
$scope.$apply(function (){
$scope.getMyData();
});
}, 5000);