#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 для получения дополнительной информации 🙂