在angular中插入或删除数组的上下文中,是否可以查看数组,然后获取在数组中添加或删除的对象?我不关心数组中的对象属性,只关心要添加或删除的对象本身。所以我相信$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);
});
我希望能够获得添加/删除的项目,这样我就可以使用它或将其保存在某个地方。
发布于 2017-01-13 07:33:45
$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
https://stackoverflow.com/questions/41624038
复制相似问题