javascript - Angular,比较 2 个对象并替换(可能连接?)

标签 javascript jquery angularjs

我有 2 个 Angular 多选列表,它们相互依赖。一种是父列表,一种是子列表。登陆时,子列表中没有任何内容,一旦您从父多项选择中选择(一个或多个)项目,它将使用父列表中所选项目的子项填充子列表。这非常有用 - 仅供引用,我在父模型上有一个 $watch ,因此当它发生更改时(用户在父列表中选择某些内容 - 然后它将调用 $http 并获取子列表的结果

像这样 -

$scope.$watch('selectedResources', function (newValue) {
angular.forEach($scope.selectedResources, function(data){
                $scope.generalIDArray.push(data.id);
            });
            //id's = $scope.imageIDArray
            //place new data in $scope.imageOptionsSub
            $http({
                    method: 'POST',
                    url: '/listSubCategories',
                    data: {
                        page: 0,
                        ids: $scope.generalIDArray
                    }
                })
            .success(function(data){
                //empty options
                $scope.resourceOptionsSub = [];
                //push new data in
                angular.forEach(data.subCategories, function(index) {
                    $scope.resourceOptionsSub.push(index);
                });
            });

所以 - 我将所有 id 压入并发送它们以获取结果。

但是 - 这是我的问题。在尝试之后我意识到我不想用所有新结果完全替换resourceOptionsSub,因为用户已经与子结果进行了交互 - 它们有一个 .checked 值,这意味着用户已经选择了它们,这将每次我进行新的调用时都会被清除并刷新,因为它会清空范围并替换它,即使它是相同的项目。

我想要发生的是比较一下resourceOptionsSub中是否已经存在与调用一起传入的项目,并保留原始的resourceOptionsSub并将其与新传入的项目进行比较,也许拉掉不再存在的元素?

我想我应该以某种方式比较 2 个对象 1 是原始对象,2 是新对象 - 如果 2 有 1 没有的东西,则将其从 1 中取出,因为这样我就可以保留原来的对象同样没动过。如果有人能指出我在哪里看的正确方向,我将非常感激,因为我对如何处理这个问题有点茫然。感谢您的阅读!

最佳答案

angular.extend 可以工作,但你需要从一个空对象开始,如下所示:

var updatedObj = angular.extend({}, obj1, obj2); 

关于javascript - Angular,比较 2 个对象并替换(可能连接?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26932517/

相关文章:

javascript - 离开 URL 并返回后,图表中数据丢失。刷新后显示

javascript - 使用 Google map 为 geoJson 文件中的点自定义标记

javascript - 如何从 ASP :NET? 将数组传递给 jQuery

angularjs - angularjs 中的日期范围选择器

javascript - Ajax 自动完成 - 输入为空时不触发调用

JavaScript 时刻格式日期字符串

javascript - 使用 jQuery 将属性从一个元素复制到另一个元素

javascript - 我可以引用变量上的单击事件吗?

javascript - Angular js 不等待 $http 吗?

javascript - 在 Rails 上使用 angularjs 和 ruby​​ 时出现未知的 Provider e-provider 错误