首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angularjs监视数组和获取更改的对象

Angularjs监视数组和获取更改的对象
EN

Stack Overflow用户
提问于 2017-01-13 06:19:40
回答 1查看 1.3K关注 0票数 4

在angular中插入或删除数组的上下文中,是否可以查看数组,然后获取在数组中添加或删除的对象?我不关心数组中的对象属性,只关心要添加或删除的对象本身。所以我相信$watchCollection在这里很适合,所以它不是一个很深入的观察。

例如,我将此数组作为一个双列表框的模型:

代码语言:javascript
复制
$scope.employees = [
    {
      name: "Bob",
      id: "0"
    },
    {
      name: "Carl",
      id: "1"
    },
    {
      name: "Bill",
      id: "2"
    }
  ];

当我从列表框中移出或移到列表框上(插入/删除)时,列表框将自动更新$scope.employees。如果我这样做了:

代码语言:javascript
复制
$scope.$watchCollection('employees', function(){
    //somehow get changed object
    var changedObject = ...;
    $scope.changedItems.push(changedObject);
  });

我希望能够获得添加/删除的项目,这样我就可以使用它或将其保存在某个地方。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-13 07:33:45

$watchCollection处理函数接收新值和旧值:

代码语言:javascript
复制
$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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41624038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档