Ionic Radio Button долгое время отклика на iPad Air - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь создать приложение для отображения вопросника, но всякий раз, когда я нажимаю переключатель, ответ задерживается как минимум на несколько секунд.Эта проблема, однако, появляется только тогда, когда я тестирую приложение на iPad Air или когда я устанавливаю дросселирование процессора на 6-кратном замедлении в Google Dev Tools.Компьютер, на котором я работаю, имеет Intel i5-760 с частотой 2,8 ГГц.Я также обнаружил, что уменьшение количества переключателей также увеличивает производительность.На данный момент у меня есть 30-50 вопросов с 3 переключателями на каждой странице, так что около 90-150 переключателей, так что это может быть из-за огромного количества кнопок, которые у меня есть на странице.Хотя я не уверен в этом.

В приведенном ниже коде показан HTML-код, который я использую для отображения ответов:

<div *ngFor="let question of Questions" radio-group formControlName="{{'question' + question.Id}}" class="question-container" [ngClass]="{'custom-highlight': question.Highlight}">
  <div text-left class="question">
    <h3>{{question.QuestionText}}</h3>
  </div>
  <div text-wrap class="answer-container">
    <ion-list mode="md" no-lines>
      <ng-container *ngFor="let answer of question.Answers">
        <div class="answer">
          <ion-item no-padding mode="md" class="no-background">
            <ion-label mode="md" [innerHTML]="answer.Label | translate"></ion-label>
            <ion-radio mode="md" id="answer{{answer.Id}}" item-start value="{{answer.Label}}" checked="{{questionnaireForm.get('answer' + answer.Id).value ? questionnaireForm.get('answer' + answer.Id).value : false}}" (click)="clicked(answer)"></ion-radio>
          </ion-item>
          <div *ngIf="questionnaireForm.get('answer' + answer.Id).errors" class="text-danger">
            <small text-left>{{getErrorMessageForAnswer(questionnaireForm.get('answer' + answer.Id).errors)}}</small>
          </div>
        <small text-left *ngIf="answer.Hint" class="form-text text-muted" [innerHTML]="answer.Hint"></small>
      </div>
    </ng-container>
  </ion-list>
</div>

Я попытался определить время ответов, зарегистрировав Date.now ()в начале метода и в конце метода.Поскольку этот метод рекурсивный, я поставил console.log(Date.now()) в конце рекурсивного метода.Этот метод всегда заканчивался в ~ 100 мс-150 мс.Я не уверен, что это правильное время для моего метода, поэтому я немного скептически отношусь, и мой код может быть фактически мусорным.

Я также проверил профилировщик Google Dev Tools, и он показалмне это Google Dev Tools Profiler .Я понятия не имею, что это означает или какие события вызываются, поскольку я пытался удалить событие click из переключателя, и он по-прежнему вызывал те же события.

Пожалуйста, помогите, и если да, то спасибо.

1 Ответ

0 голосов
/ 14 января 2019

Из того, что я обнаружил, причина того, что радио-кнопки так поздно реагируют на недорогие мобильные телефоны, заключается в количестве элементов, которые я пытаюсь загрузить.Иногда я ставлю 52 вопроса с 3 вариантами каждый.Это замедлило приложение.Чтобы это исправить, я реализовал ngx-virtual-scroller, поскольку Ionic Virtual Scroll по какой-то причине не захотел загружать элементы.Вероятно, это как-то связано со структурой приложений компании.Но это проблема для другого дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...