查看热键??

2020-09-07 13:59发布

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

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


专家们,

我正在尝试通过关注博客在ui5应用程序上实现热键(f1,f2等)

https://blogs.sap.com/2018/03/20/sapui5-enable-keyboard-shortcuts/

我的问题是"我如何使它在视图级别上工作"我能够在文档上进行操作,但是后来我无法执行" this.byId(" someid")",因为" this"是此处的文档 这是我的代码:

 setKeyboardShortcuts:function(){


 $(document).keydown(function(evt){
         
           开关(evt.keyCode){

 案例118://F7键
 var control = this.byId(" addbtn"); //或sap.ui.getCore()。byId(" idPrevPageButton")
 如果(control && control.getEnabled()&& control.getEnabled()){
 control.firePress(); //按钮PRESS事件
 }
 打破;


//其他SHORTCUT案例:请参考link1-https://css-tricks.com/snippets/javascript/javascript-keycodes/
 默认:
 打破;
 }
          });


 },
 

我在" onafterrendering"中调用此方法

我尝试将" this"," this.getView"替换为文档,但无济于事。

任何见识都会有所帮助。

致谢

Rakesh

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

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


专家们,

我正在尝试通过关注博客在ui5应用程序上实现热键(f1,f2等)

https://blogs.sap.com/2018/03/20/sapui5-enable-keyboard-shortcuts/

我的问题是"我如何使它在视图级别上工作"我能够在文档上进行操作,但是后来我无法执行" this.byId(" someid")",因为" this"是此处的文档 这是我的代码:

 setKeyboardShortcuts:function(){


 $(document).keydown(function(evt){
         
           开关(evt.keyCode){

 案例118://F7键
 var control = this.byId(" addbtn"); //或sap.ui.getCore()。byId(" idPrevPageButton")
 如果(control && control.getEnabled()&& control.getEnabled()){
 control.firePress(); //按钮PRESS事件
 }
 打破;


//其他SHORTCUT案例:请参考link1-https://css-tricks.com/snippets/javascript/javascript-keycodes/
 默认:
 打破;
 }
          });


 },
 

我在" onafterrendering"中调用此方法

我尝试将" this"," this.getView"替换为文档,但无济于事。

任何见识都会有所帮助。

致谢

Rakesh

付费偷看设置
发送
6条回答
木偶小白
1楼 · 2020-09-07 14:39.采纳回答

您好 Rakesh Singh

为此特定的场景,我为此创建了一个api。它只是热键api的接口,具有很多不错的功能。

https://blogs.sap.com/2017/06/14/hotkeys-keyboard-shortcuts-in-sap-ui5-using-open-source-plugin /

在所有routematchhandler中调用以下方法,因为每当您绑定新的键时,所有olf绑定的键都会被删除

  hotkeyInterface.getInstance()。bindHotKeys(this.hotKeyHanlders); 

BR,

Mahesh

绿领巾童鞋
2楼-- · 2020-09-07 14:53

您好 Rakesh Singh

谢谢:)听说它有效!

BR,

马西什

何必丶何苦呢
3楼-- · 2020-09-07 14:52

HI

这是我们拥有的视图和控制器。 https://jsbin.com/jutowiy/edit?js,output

将鼠标光标放在输入框(在视图中)上,然后按F7键,您将获得一条消息吐司。

将鼠标光标放在输入框之外,按F7时不会收到消息吐司。

 sap.ui.define([
   'sap/ui/core/mvc/Controller','sap/m/HBox','sap/m/Input','sap/m/Button','sap/m/MessageToast'],
   功能(控制器,HBox,输入,按钮,MessageToast){
   sap.ui.jsview(" myView.Template",{
     getControllerName:function(){
       返回" myView.Template";
     },
     createContent:function(oController){
       返回新的HBox({
        项目:[
          新输入({
           值:" Hello World"
          }),
          新按钮({
            文字:"按",
            按下:[oController,oController.f7Pressed]
          })
       ]
       });
     },
     onAfterRendering:function(){
       var oController = this.getController();
       this。$()。bind(" keydown",function(evt){
         开关(evt.keyCode){
           案例118:
             oController.f7Pressed();
             打破;
           默认:
             打破;
         }
       });
     }
   });

   Controller.extend(" myView.Template",{
     f7Pressed:function(oEvent){
       如果(oEvent){
         MessageToast.show("已按下按钮");
       }其他{
         MessageToast.show("按下F7键")
       }
     },
   });
 });

 var view = sap.ui.view({
   类型:sap.ui.core.mvc.ViewType.JS,
   viewName:" myView.Template"
 });
 view.placeAt(" content");
 

希望这会有所帮助。

谢谢

丹尼斯

打个大熊猫
4楼-- · 2020-09-07 14:59

你好丹尼斯,

感谢您的回复。 我的要求有点不同:无论用户在何处单击热键都应执行,这意味着如果加载了屏幕并且用户按f7键,则应执行特定功能,如果他按f6键,则应执行其他功能,依此类推。 无论鼠标或光标位于何处,我都希望将其附加到热键上。

我认为将整个视图绑定到keydown事件会有所帮助,但是我不确定该怎么做。 请提供您的输入。

致谢

Rakesh

大简至美
5楼-- · 2020-09-07 14:45

嗨Rakesh

我们有两个视图,F7响应一个视图,F6响应另一个视图

https://jsbin.com/piraqok/edit?output

希望这个希望。

谢谢

丹尼斯

Alawn_Xu
6楼-- · 2020-09-07 14:43

嗨,丹尼斯,

很好的例子,但是我不能像下面的代码那样在视图中调用屏幕元素:

 $(document).keydown(function(evt){
       开关(evt.keyCode){
         案例117:
           如果(app.getCurrentPage()。getId()===" view2"){
             app.to(" view1");
           }
           打破;
         案例118:
           如果(app.getCurrentPage()。getId()===" view1"){
             app.to(" view2");
           }
           打破;
         默认:
           打破;
       } 

您正在使用应用程序和页面,我正在使用view和page。 任何想法,在将keydown绑定到文档后如何调用view元素。

致谢

Rakesh

一周热门 更多>