"关于Dialog"在Fiori Launchpad应用程序中

时间:2015-10-30 15:53:33

标签: sapui5 sap-fiori

在Fiori Launchpad中,当我在一个应用程序中时,如果我点击我的用户名,然后点击关于,我会得到一个很好的弹出窗口,其中包含有关我的应用程序的一些信息。 现在我明白这是我可以自定义是可见的是或否,但我的问题是: 如何以编程方式访问此对话框。如果我点击链接,我会看到Div" aboutContainerDialogID"出现。然而,一旦关闭,它就会从DOM中完全删除。 我在许多标准SAP js文件中搜索过,但在追踪对话框时没有成功。

我的目标:我想将快捷方式绑定到此对话框。如果用户输入键盘快捷键,则必须出现对话框。我修复了快捷方式,对话框还没有。任何帮助或提示将不胜感激。

2 个答案:

答案 0 :(得分:0)

sap.ui.getCore().byId("aboutBtn").firePress();

//最好放入try catch方法..以防关于按钮不可用。

更新:动作是根据应用和当前屏幕用户动态构建的。

因此,当我们使用上述代码时,它可能会失败,因为@Matti说。 我看到的最佳解决方案是先触发操作按钮..

try{
    sap.ui.getCore().byId("aboutBtn").firePress();  
}catch(e){
    sap.ui.getCore().byId("actionsBtn").firePress(); //this creates action menu
    sap.ui.getCore().byId("aboutBtn").firePress();
}

我同意它不是一个干净的解决方案。 //如果我发现更好的东西会更新...

答案 1 :(得分:0)

好的,我已经找到了一种不使用按钮的方法。这使得它在使用无头配置运行时也能正常工作。这是代码:

new sap.ushell.ui.footerbar.AboutButton().firePress();

我的控制器中有以下功能,我在onInit()上加载:

registerKeyListeners: function() {
  var map = [];
  onkeydown = onkeyup = function(e) { //eslint-disable-line
         e = e || event; //eslint-disable-line
         map[e.keyCode] = e.type === "keydown";
   };

   window.addEventListener("keydown", function(e) { //eslint-disable-line

          if (map[17] && map[112]) {
            new sap.ushell.ui.footerbar.AboutButton().firePress(); //eslint-disable-line
            map = [];
         }

   });
},

这允许我使用Control和F1键的组合来请求当前应用程序的信息。