У меня есть выпадающий список, который фильтрует данные, соответствующие выбранной опции. Если ничего не выбрано, то отображается более 3000 записей, которые замораживают мой пользовательский интерфейс на несколько секунд. Но для другого варианта переключения, который имеет несколько сотен данных, идеально и быстро. Есть ли способ повысить производительность здесь?
Ниже приведен раскрывающийся фильтр, а список городов - это массив, который получает данные с сервера.
Select City:<span class="float-right fa fa-window-close mb-2"
ng-click="sm.selectedCity=undefined;">
</span>
<select ng-model="sm.selectedCity" >
<option value="" selected hidden />
<option ng-repeat="s in sm.citylist"
ng-selected="sm.selectedCity" ng-value="">
{{s.value}}
</option>
</select>
Следующие данные пользовательского интерфейса зависят от выбранного выше варианта города,Первоначально не выбрана ни одна опция, которая выбирает более 3000 данных для одного из сгруппированных объектов Country.
Чтобы кратко объяснить ниже UI ... sampledata - сложный объект, заполненный с сервера. sampledata содержит свойство Country, которое сгруппировано, и его можно свернуть или развернуть, щелкнув плюс / минус в правой части. В зависимости от выбранного фильтра города сгруппированная страна изменится. Работает нормально для меньшего количества данных. Но если в одной из стран больше данных, таких как (3000+), мой пользовательский интерфейс зависает при очистке фильтра
<div ng-repeat="(key, value) in sm.sampledata | filter:{STFilter:sm.selectedCity} | filter:{someother } | filter:search.number | orderBy:'Country' | groupBy: 'Country' track by $index">
<div class="mb-5">
{{ key }} ({{ value.length }})<span ng-class="sm.toggle[$index] === true ? 'fa fa-minus' : 'fa fa-plus'" ng-click="sm.toggle[$index] = !sm.toggle[$index]" class="pull-right"></span>
</div>
<div ng-show="sm.toggle[$index]">
<div ng-repeat="o in value">
//o is a complex object in which one of the object needs to be filtered based on selected option from dropdown
<div>
{{o.sample1}}<span class="pull-right">{{o.sample2}}</span>
</div>
//Still more will come
</div>
</div>
<hr />
</div>
Примечание. Я использую угловую версию 1.7.2