在以角度插入或删除数组的上下文中,是否可以观察数组然后获取从数组中添加或删除的对象?我不关心数组中的对象属性,只关注对象本身的添加或删除。所以我相信$ watchCollection在这里很合适,所以它不是一块很深的手表。
例如,我将此数组作为双列表框的模型:
$scope.employees = [
{
name: "Bob",
id: "0"
},
{
name: "Carl",
id: "1"
},
{
name: "Bill",
id: "2"
}
];
当我移动一个或者移动它时,列表框将自动更新$ scope.employees(插入/删除)。如果我这样做:
$scope.$watchCollection('employees', function(){
//somehow get changed object
var changedObject = ...;
$scope.changedItems.push(changedObject);
});
我希望能够获取添加/删除的项目,以便我可以使用它或将其保存在某处。
答案 0 :(得分:-1)
$watchCollection
处理函数接收新值和旧值:
$scope.$watchCollection('employees', function(newValue, oldValue){
console.log(newValue);
console.log(oldValue);
var addedArray = newValue.filter(x => !oldValue.find(x));
var removedArray = oldValue.filter(x => !newValue.find(x));
var changedObject = {added: addedArray, removed: removedArray};
$scope.changedItems.push(changedObject);
});
有关详细信息,请参阅AngularJS $watchCollection API Reference