vaadin - Vaadin 的 SplitLayout.setSplitterPosition(80) 只在第一次工作;随后的电话似乎没有回应
问题描述
在 Vaadin 12 中,我创建了一个按钮,单击该按钮时,会将拆分布局位置设置为某个非零、非 100 的值,如下所示:
btnHelp.addClickListener(event -> {
log.info("info pressed");
MainApp.sp.setSplitterPosition(80);
MainApp.iFrameHelp = new Html( "<iframe src=\"https://docs.readthedocs.io/en/latest/intro/getting-started-with-sphinx.html/intro/getting-started-with-sphinx.html\"></iframe>");
//btnHelp.setIcon(new Icon(VaadinIcon.INFO_CIRCLE));
});
这很好用。但是,如果我假装是用户,并通过 Chrome 浏览器调整拆分布局(通过拖动垂直布局),以便“关闭”(或只是减小)第二个垂直“面板”的大小,并且然后我再次单击该按钮,它似乎不服从将分离器位置重置为 80 的命令。它似乎只在第一次调用时服从命令。这是一个错误吗?如果是这样,是否有解决方法?(或者,我应该以不同的方式执行此操作吗?)
解决方案
这是https://github.com/vaadin/vaadin-split-layout-flow/issues/50的副作用。发生的情况基本上是服务器端仍然认为拆分位置设置为 80,这使得它忽略了setSplitterPosition(80)
调用。
您可以通过使用低级 API 以绕过服务器脏检查逻辑的方式设置位置来解决此问题:
MainApp.sp.getPrimaryComponent().getElement().executeJavaScript(
"this.style.flexBasis='80%'");
MainApp.sp.getSecondaryComponent().getElement().executeJavaScript(
"this.style.flexBasis='20%'");
推荐阅读
- r - 跨多列运行移动平均线 - R
- powershell - 无法使用指定的命名参数解析参数集
- vb.net - 当日期尚未显示时,DateTimePicker 不起作用
- java - 转换列表
到 Java 中的 Object[][] 二维数组 - mysql - 仅当子表行的所有值都是特定值时才更新父表列
- python - 在 python 中的 Modis NETCDF 中绘制平滑 Savgol 过滤器
- javascript - 从数组和对象数组中提取对象的属性作为数组
- python - pygame 中的碰撞帮助以及当您使用角度和速度移动时如何阻止它撞到墙壁
- sql - 在 SQLite 中将整列的数据类型从字符串更改为整数?
- nativescript - Angular NativeScript PlayGround Android 权限:android:usesCleartextTraffic="true"