在 Angular 中的 watch 函数(重置过滤器)中存储 IIFE 的原始值
Storing original values for IIFEs in watch function (reset filters) in Angular
我有一堆过滤器,我试图编写一个函数,以便在 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 也是 watch 函数中的 IIFE。每当我更新 allElements 时,整个 stopsObject 都会更新。
但是要为我所有的过滤器写一个重置函数
$scope.allFilters = {
stopsObject:$scope.stopsObject,
};
$scope.resetFilter = function() {
$scope.stopsObject=$scope.allFilters.stopsObject;
};
这不起作用,因为 stopsObject 会不断更新。如何将原始计算的 $scope.stopsObject 设置到我的 allFilters 对象中。我基本上需要在 HTTP 请求完成后立即计算的值。
有什么建议吗?
如果你只是做一个angular.copy比如
$scope.allFilters=angular.copy({...})
它完美运行。
我有一堆过滤器,我试图编写一个函数,以便在 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 也是 watch 函数中的 IIFE。每当我更新 allElements 时,整个 stopsObject 都会更新。
但是要为我所有的过滤器写一个重置函数
$scope.allFilters = {
stopsObject:$scope.stopsObject,
};
$scope.resetFilter = function() {
$scope.stopsObject=$scope.allFilters.stopsObject;
};
这不起作用,因为 stopsObject 会不断更新。如何将原始计算的 $scope.stopsObject 设置到我的 allFilters 对象中。我基本上需要在 HTTP 请求完成后立即计算的值。
有什么建议吗?
如果你只是做一个angular.copy比如
$scope.allFilters=angular.copy({...})
它完美运行。