Автоматически растущая текстовая область имеет недопустимую высоту после рендеринга в sapui5
У меня есть представление XML с автоматически растущим sap.m.TextArea
<TextArea value="{/abstract}" growing="true" growingMaxLines="100" maxLength="5000" rows="5">
...
</TextArea>
Если я введу достаточно большой текст, который занимает более 5 строк, сохраните его и перезагрузите текстовую область страницы, которая будет отображаться с очень большой высотой. Если мы попытаемся что-то набрать, текстовая область отрегулирует ее высоту под текст.
После небольшого исследования я обнаружил, что методы текстовой области onAfterRendering
а также oninput
использовать метод _adjustHeight
который принимает элемент dom и использует его свойство scrollHeight
рассчитать высоту. Но когда это называется onAfterRendering
там неправильно scrollHeight
,
Я пытался вызвать событие ввода, но обработчик ввода в текстовой области пропускает события, которые были инициированы jQuery(). Trigger().
Может быть, у кого-то есть идеи, как этого избежать или уже сталкивался с этой проблемой?
1 ответ
Я только что столкнулся с той же проблемой (1.44.8) при переходе к представлению с TextArea и новой привязкой. Итак, в качестве полного хакерского исправления на данный момент это похоже на работу во время перехода к представлению (в основном ставит недействительным после завершения рендеринга):
// Bug fix - invalidate TextAreas
window.setTimeout(function () {
this.getView().byId("myTextAreaField").invalidate();
}.bind(this), 0);