请参阅以下代码:
var fieldsControls = $filter('filter')(vm.FieldsControls, { FieldId: id });
for (var i = 0; i < fieldsControls.length; i++)
{
if (fieldsControls[i].ControlType == "DropDown") {
fieldsControls[i].Options = $filter('filter')(vm.Options, { type: fieldsControls[i].type });
}
}
return fieldsControls;
返回之后(甚至在for循环之后),我发现原始数组“vm.FieldsControls”正在使用新的Options值进行更新。但是,这不应该只改变新的数组fieldControls吗?
答案 0 :(得分:2)
首先准备好数组的深层副本。这是代码:
var copy = angular.copy(vm.FieldsControls);
var fieldsControls = $filter('filter')(copy, { FieldId: id });
for (var i = 0; i < fieldsControls.length; i++)
{
if (fieldsControls[i].ControlType == "DropDown") {
fieldsControls[i].Options = $filter('filter')(vm.Options, { type: fieldsControls[i].type });
}
}
return fieldsControls;