假设有一个示例数据集,如果要扩展绑定到 ng-options 的数组中的现有对象,首先需要确保 angular 具有由特定唯一属性跟踪的数组项。然后您可以在相应位置更新数组中的新项目,angular 将自动在绑定的选择选项中执行更新(无需重新渲染其他选项值)。但是这种方法可能不会刷新已经绑定的 ng-model。
使用传统循环的另一种简单方法:-
<select ng-options="item.display for item in items" ng-model="selected"></select>
并且您的更新逻辑可以是:-
for (x = 0, l = $scope.items.length; x < l; x++){
var item = $scope.items[x];
if(item.name == itemsUpdate.name) {
angular.extend(item,itemsUpdate); //Extend it
break;
}
}
演示1
或者由于您使用的是lodash
,可能更少的代码行:-
var item = _.first($scope.items, {name:itemsUpdate.name}).pop(); //Get the item add necessary null checks
angular.extend(item, itemsUpdate);
演示2
angular.extend
将确保基础源对象引用在更新属性时保持不变,您也可以使用 lodash merge
。