【问题标题】:Auto growing text area has invalid height after rendering in sapui5在 sapui5 中渲染后自动增长的文本区域的高度无效
【发布时间】:2017-08-25 08:30:33
【问题描述】:

我有带有自动增长 sap.m.TextArea 的 xml 视图

<TextArea value="{/abstract}" growing="true" growingMaxLines="100" maxLength="5000" rows="5">
    ...
</TextArea>

如果我输入了超过 5 行的足够大的文本,请保存并重新加载页面文本区域将呈现非常大的高度。如果我们尝试输入一些内容,文本区域会根据文本调整其高度。

经过小研究,我发现文本区域方法onAfterRenderingoninput 使用方法_adjustHeight,该方法采用dom 元素并使用其属性scrollHeight 来计算高度。但是当它在onAfterRendering 中调用时,scrollHeight 是错误的。

我尝试触发输入事件,但文本区域中的输入处理程序跳过了由 jQuery().trigger() 触发的事件。

也许有人知道如何避免这种情况或已经遇到过这个问题?

【问题讨论】:

  • 我们遇到了类似的问题,并通过覆盖文本区域溢出更新回调来修复它。不过我不能分享代码,所以如果你提供一个 jsfiddle 或类似的,我们可以处理它;)
  • @AshKander,据我了解,您编写了自己的控件来扩展 TexArea 并解决此问题,不是吗?我有想法使用 setTimeout(...) 之类的东西,但我不确定它是否会有所帮助
  • 不,我们在 sapui5 中捕获内部调整大小事件并覆盖控件的行为。恕我直言,文本区号内有问题,希望它会在当天修复:)
  • @AshKander 谢谢你的回答:)

标签: javascript textarea sapui5 autogrow


【解决方案1】:

我在导航到带有 TextArea 和新绑定的视图时遇到了同样的问题 (1.44.8)。因此,作为一个完整的 hack 修复,这似乎在导航到视图期间有效(基本上在渲染完成后将无效):

// Bug fix - invalidate TextAreas
window.setTimeout(function () {
    this.getView().byId("myTextAreaField").invalidate();
}.bind(this), 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    相关资源
    最近更新 更多