У меня проблема с I, и я не могу обернуть вокруг себя голову.Фильтрация в то время как HTTP все еще продолжается Угловое
Я отправляю запрос http, извлекающий данные из API. Это может занять до 15 seconds
. Но я реализовал кеш, чтобы пользователь мог видеть часть уже полученных данных. Каждый 1500ms
Я обновляю эти данные. Как только data.length>0
, я показываю фильтры пользователю, так что он может фильтровать свои результаты по цене.
Когда он применяет фильтры, все фильтры после каждого обновления данных возвращаются в исходное состояние.
$scope.$watch('trainRequest.getRequest()',function(newVal,oldVal){
$scope.data = trainRequest.getRequest();
$scope.trainArray = resultService.trainArray;
if($scope.data.error!==1){
// here I generate the minimum and maximum price in the data that I use to show the filter.
$scope.maxValue=(function(){
var tempArray=[];
for(var i=0;i<$scope.data.length;i++){
tempArray.push($scope.data[i].price); // jshint ignore:line
}
return tempArray.length>0 ? Math.round(Math.max.apply(Math, tempArray)) : 5000;
})();
$scope.minValue=(function(){
var tempArray=[];
for(var i=0;i<$scope.data.length;i++){
tempArray.push($scope.data[i].price); // jshint ignore:line
}
return tempArray.length>0 ? Math.round(Math.min.apply(Math, tempArray)) : 0;
})();
}
Вот моя проблема. Предположим, что данные обеспечивают 100$
и 1000$
как минимум и максимум ценового массива. Затем мой фильтр (ползунок) перемещается в этом интервале. Но давайте теперь скажем, что пользователь принимает только 800
как максимальную цену. Затем он использует ползунок и данные, на которых отображаются обновления.
Затем данные обновляются, потому что я получаю новые данные с сервера. Теперь скажем, что фактический максимум равен 1400$
. Тогда ползунок будет варьироваться от 100
до 1400
. Что также происходит, так это то, что ползунок установлен в это состояние, и я хочу, чтобы ползунок оставался на уровне 800 $.
Моя проблема в том, что каждый раз $scope.data
обновления (потому что это функция часов и maxValue тоже есть) Я не могу сохранить статус по желанию пользователя.
Как можно сохранить состояние фильтра только в том случае, если оно было изменено пользователем, а не обновлением $scope.data
?
спасибо за быстрый ответ. Позвольте мне понять это прямо. $ scope.maxValue обновляется каждый раз при обновлении $ scope.data. Теперь я устанавливаю $ scope.selectedMaxValue = function() {return $ scope.maxValue}. Как проверить, выбрано ли selectedMaxValue() === maxValue в зависимости от обновления. Извините, это может показаться глупым, но я застрял в этой точке. Можете ли вы просто привести пример, как это будет работать. Или как эта функция selectedMaxValue выглядит как – Dribel
См. Редактирование моего ответа. –
Выглядит хорошо, я думаю ... Как вы выбрали selectedMaxValue в первую очередь. – Dribel