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

时间:2015-03-05 04:49:34

标签: javascript angularjs http watch

我有一堆过滤器,我试图编写一个函数,以便在ng-click时将所有过滤器重置为原始值。 但是,我的所有过滤器

例如,我有一个停止数量的过滤器,一切正常。

$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再次成为监视功能中的IIFE。每当我更新allElements时,整个stopsObject都会更新。

但要为我的所有过滤器编写重置功能

         $scope.allFilters = {
            stopsObject:$scope.stopsObject,
          };

$scope.resetFilter = function() {

            $scope.stopsObject=$scope.allFilters.stopsObject;

          };

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果你只是做一个angular.copy,比如

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

效果很好。