如何在shell中包含根视图

时间:2014-10-21 07:39:20

标签: sapui5

我看到这个例子 https://openui5.hana.ondemand.com/explored.html#/entity/sap.ui.unified.Shell/samples

现在我有一个根视图(this.app),一切正常。

return this.app;

现在我想在shell容器中包含root应用程序.. 我试着这样做:

var oShell= new sap.m.Shell("idShell", {
            title: "Test App",
            logo:"https://dl.dropboxusercontent.com/u/7546923/OpenUI5/SAPUI5.png",
            headerRightText: "This is a sap.m.Shell",
            logout: function() {alert("Logout button was pressed");}
        });

oShell.setApp(this.app);

return oShell;

但是通过这种方式,我无法看到顶部的栏。 (我只看到应用程序的宽度和应用程序中的徽标,左侧)

我尝试这样做:

var oShell= new sap.m.Shell("idShell", {
            title: "Test App",
            logo:"https://dl.dropboxusercontent.com/u/7546923/OpenUI5/SAPUI5.png",
            headerRightText: "This is a sap.m.Shell",
            logout: function() {alert("Logout button was pressed");}
        });

oShell.setApp(sap.ui.xmlview("view.shell"));  //the view of the example in the documentation

return oShell;

通过这种方式,我可以看到栏,但我无法将根应用与shell的内容相关联

现在我使用sap.ui.unified.Shell

jQuery.sap.require("sap.ui.unified.Shell");
jQuery.sap.require("sap.ui.unified.ShellHeadItem");
this.shell = new sap.ui.unified.Shell('');

var logout=new sap.ui.unified.ShellHeadItem({
    tooltip: "Logout",
    icon: "sap-icon://menu2"
});

this.shell.addHeadItem(logout);


this.shell.addContent(this.app);

如何使用MVC模式管理shell bar内容?我想使用XML视图。我怎么能避免写

jQuery.sap.require("sap.ui.unified.Shell");
jQuery.sap.require("sap.ui.unified.ShellHeadItem");

1 个答案:

答案 0 :(得分:3)

这对我有用:

new sap.m.Shell("Shell", {
  app: sap.ui.jsview("RootView", "my-app.view.App")
}).placeAt("root");

虽然my-app.view.App的根控件是sap.m.SplitApp(或sap.m.App)。请注意,sap.m.Shell只提供一个框架,它不提供您在sap.m中通常使用的任何NavContainer,Page或类似概念。您view.shell的根控制是什么?来自文档:

  

getApp():sap.ui.core.Control

     

Getter for aggregation app。 Shell包含App或SplitApp   (它们可能包含在视图中)。不允许使用其他控件类型。

顺便说一下:您的示例链接对我不起作用。

BR 克里斯