我有一堆过滤器,我试图编写一个函数,以便在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请求完成后立即计算的值。
有什么建议吗?
答案 0 :(得分:0)
如果你只是做一个angular.copy,比如
$scope.allFilters=angular.copy({...})
效果很好。