Подробные стрелки для элементов списка в режиме «ios» Ionic 4

#ionic-framework #ionic4

#ionic-framework #ionic4

Вопрос:

Возникла небольшая проблема с элементами списка при использовании последней версии Ionic. Согласно документации для ion-item , для detail свойства:

Если значение true, на элементе появится подробная стрелка. По умолчанию используется значение false, если только режим не ios и не присутствует свойство href, onclick или button.

Я использую значение по умолчанию, и с ним все работает нормально href , но когда я использую (click) , оно не отображается для режима «ios». Код является:

 <ion-item (click)="saveContact()">
  

Я делаю что-то неправильно, чтобы заставить это работать с обработчиками кликов?

Комментарии:

1. Вы тестируете на устройстве или в браузере?

2. Я тестирую оба. В обоих случаях, когда ios режим активен, подробные стрелки появляются, когда href используется, но не для (click) .

Ответ №1:

Я просмотрел исходный код, и, похоже, это ошибка с Ionic (версия 4.1.0). Это из исходного кода, похоже, что если режим установлен на «ios» и доступен для нажатия, то отображается подробная стрелка.

isClickable () кажется некорректным, поскольку он не учитывает «onClick» и просто ищет href и если для кнопки attr установлено значение true. Если для кнопки установлено значение true или передан href, я действительно вижу стрелку в режиме ios.

  private isClickable(): boolean {
    return (this.href !== undefined || this.button);
  }
  

Затем в методе рендеринга в строке 153, когда установлено логическое значение showDetail (для отображения стрелки):

 const clickable = this.isClickable();
    const TagType = clickable ? (href === undefined ? 'button' : 'a') : 'div' as any;
    const attrs = TagType === 'button' ? { type } : { href };
    const showDetail = detail !== undefined ? detail : mode === 'ios' amp;amp; clickable;
  

Ссылка:

https://github.com/ionic-team/ionic/blob/master/core/src/components/item/item.tsx

Комментарии:

1. Это неверно. Включение свойства означает, что вы явно устанавливаете для него значение true, это просто сокращение для него. Я дважды проверил, и он просто включает его для всех режимов, как и ожидалось. Единственный способ получить измененное поведение, которое используется по умолчанию, — это не устанавливать свойство вообще. В противном случае вы так или иначе присваиваете ему явное значение для всех режимов. Как я уже говорил в вопросе, при использовании он работает нормально href , единственная проблема заключается в использовании (click) .

2. Я создал запрос на извлечение, чтобы исправить эту проблему: github.com/ionic-team/ionic/pull/17708

3. Приятно, спасибо, буду следить за PR для получения дополнительной информации 🙂