在Flexible Colum Layout过渡动画之后,专注于输入

2020-08-21 18:12发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,

我想专注于输入而没有太多的超时。 使用flexibleColumnLayout(FCL)过渡动画时,输入不会立即可见,因此在页面已加载时不会完成焦点。

第一次调用:加载和绑定"详细信息"页面元素的时间> FCL过渡动画的时间,因此焦点正在工作。

当我更改不带动画的视图的链接(在另一个元素的主列表中选择)时,它也起作用。

另一方面,如果我关闭了"详细信息"页面,并且重新加载了已经加载的页面,则焦点将在过渡动画期间完成,因此不起作用。

如果我在焦点之前放了2秒钟的超时,它又可以工作了。 因此,我正在寻找某个过渡结束事件,例如,"显示元素"事件(jquery?)。

对我来说FCL事件( https://sapui5.hana.ondemand.com/#/api/sap.f.FlexibleColumnLayout%23events/Summary 永远不会触发。 我不明白为什么。

我的焦点是JS:

 this.byId(" itemForm")。bindElement({
 路径:"/" + sItemPath,
 事件:{
 更改:function(){


//关注下一个输入
 jQuery.sap.delayedCall(250,this,function(){
 var oInput = this.getView()。byId(sInputID),
 iTxtLength = 0;
 oInput.focus();
 oInput.getDomRef()。scrollIntoView({
 行为:"平稳",
 块:"中心"
 });


 iTxtLength = oInput.getValue()。length;
 oInput.selectText(0,iTxtLength);
 });
 } .bind(this)
 }
 });
 

能帮我吗? 非常感谢您的反馈。

干杯

塞弗林

(53.8 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,

我想专注于输入而没有太多的超时。 使用flexibleColumnLayout(FCL)过渡动画时,输入不会立即可见,因此在页面已加载时不会完成焦点。

第一次调用:加载和绑定"详细信息"页面元素的时间> FCL过渡动画的时间,因此焦点正在工作。

当我更改不带动画的视图的链接(在另一个元素的主列表中选择)时,它也起作用。

另一方面,如果我关闭了"详细信息"页面,并且重新加载了已经加载的页面,则焦点将在过渡动画期间完成,因此不起作用。

如果我在焦点之前放了2秒钟的超时,它又可以工作了。 因此,我正在寻找某个过渡结束事件,例如,"显示元素"事件(jquery?)。

对我来说FCL事件( https://sapui5.hana.ondemand.com/#/api/sap.f.FlexibleColumnLayout%23events/Summary 永远不会触发。 我不明白为什么。

我的焦点是JS:

 this.byId(" itemForm")。bindElement({
 路径:"/" + sItemPath,
 事件:{
 更改:function(){


//关注下一个输入
 jQuery.sap.delayedCall(250,this,function(){
 var oInput = this.getView()。byId(sInputID),
 iTxtLength = 0;
 oInput.focus();
 oInput.getDomRef()。scrollIntoView({
 行为:"平稳",
 块:"中心"
 });


 iTxtLength = oInput.getValue()。length;
 oInput.selectText(0,iTxtLength);
 });
 } .bind(this)
 }
 });
 

能帮我吗? 非常感谢您的反馈。

干杯

塞弗林

(53.8 kB)
付费偷看设置
发送
4条回答
lukcy2020
1楼-- · 2020-08-21 18:49

您好Séverinde BEAULIEU

我会尝试 EventBus , 是一种发布-订阅机制,可用于在控制器之间进行通信。

  • 订阅事件到详细页面控制器以设置焦点
  • 重新加载详细信息页面时,从母版发布事件

例如:

Master.view.xml

 <表itemPress =" onMasterItemPress"> 

Master.controller.js

 onMasterItemPress:function(){
     sap.ui.getCore()。getEventBus()。publish('masterItemPressed');
 } 

Detail.view.xml

  

Detail.controller.js

 onInit:函数(){
    var controllerInstance = this;
    sap.ui.getCore()。getEventBus()。subscribe('masterItemPressed',function(){
       controllerInstance.getView()。byId('myInput')。focus();
    });
 } 

此致

Peter

haha101010
2楼-- · 2020-08-21 18:40

是否使用必要的参数更新url?

是的,并且始终执行我的焦点功能。

Violet凡
4楼-- · 2020-08-21 18:49

@ Séverinde BEAULIEU 的焦点在动画结束之前起作用,因为 已加载视图的DOM,并且动画仅隐藏该视图,不会重新加载该视图。 我重现了您的用例:"另一方面,如果我关闭了"详细信息"页面,并且如果我重新加载了它,并且已经被加载,则焦点将在过渡动画期间完成,因此不起作用。" 使用答案中附带的代码,我执行了以下操作来测试功能:

  1. 打开详细信息页面
  2. 将焦点移到输入字段之外
  3. 关闭详细信息页面
  4. 打开详细信息页面
  5. 专注工作!

请指定在这种情况下为什么焦点无法工作。 BR,彼得

一周热门 更多>