将IIFE的原始值存储在Angular中的监视功能(重置过滤器)中

Storing original values for IIFEs in watch function (reset filters) in Angular

本文关键字:功能 过滤器 监视 Angular 原始 IIFE 存储      更新时间:2023-09-26

我有一堆过滤器,我想写一个函数,这样在点击ng时,所有过滤器都会重置为原始值。然而,我所有的过滤器

例如,我有一个停止次数的过滤器,所有这些都很好。

$filter('stopsFilter')($scope.data)(stopsObject);

数据通过http请求获取。我对数据有一个$watch函数,当然可以根据数据更新视图。在watch函数中有stopsObject,因此我也会根据$scope.data更新它自己。由于stopsObject严格依赖于$scope.data的结构,因此没有适当的方法来预先定义stopsObject(期望将其设置为空)。

      $scope.stopsObject = { //happens in the watch function of $scope.data
        "allCars": $scope.selectall,
        "allElements": $scope.checkedStops,
        "singleElements": $scope.stopsPerLeg
      };

$scope.stopsPerLEg和checkedStops也是watch函数中的IIFE。每当我更新allElements时,整个stopsObject都会更新。

但是要为我的所有过滤器写一个重置函数

         $scope.allFilters = {
            stopsObject:$scope.stopsObject,
          };
$scope.resetFilter = function() {
            $scope.stopsObject=$scope.allFilters.stopsObject;
          };

这不起作用,因为stopsObject是不断更新的。如何将原始计算的$scope.stopsObject设置到我的allFilters对象中。我基本上需要在HTTP请求完成后立即计算的值。

有什么建议吗?

如果你只是做一个角度复制,比如

$scope.allFilters=angular.copy({...})

它工作得很好。