2016-07-07 70 views
0

在使用sap.ui.ux3.Shell时,我无法获取初始视图,但导航到其他视图并返回时显示初始视图。 请帮助我设置初始视图作为应用程序的默认/打开状态,我的第一个视图(myprofile)应该上传。sap.ui.ux3.Shell不显示初始视图

PFB我的代码:

view.xml用

<ux3:Shell id="idMainShell" worksetItemSelected="handleTabSelect"> 

    <ux3:worksetItems> 
     <ux3:NavigationItem key="wi_1" text="My Profile"></ux3:NavigationItem> 
     <ux3:NavigationItem key="wi_2" text="Dashboard"></ux3:NavigationItem> 
     <ux3:NavigationItem key="wi_3" text="Wallet"></ux3:NavigationItem> 
     <ux3:NavigationItem key="wi_4" text="Admin"></ux3:NavigationItem> 
    </ux3:worksetItems> 
</ux3:Shell> 

MyController.js

onInit: function() { }; 
 

 
handleTabSelect : function(oEvent) { 
 
\t \t var sWSIKey = oEvent.mParameters.key; 
 
\t \t var oShell = oEvent.oSource; 
 
\t \t switch (sWSIKey) { 
 
\t \t case "wi_1": 
 
// \t \t \t prompt("Username :"); 
 
// \t \t \t prompt("Password :"); 
 
\t \t \t var oView = sap.ui.view({ 
 
\t \t \t \t viewName : "exercise2_ewallet.tabs.myprofile", 
 
\t \t \t \t type : sap.ui.core.mvc.ViewType.XML 
 
\t \t \t }); 
 
\t \t \t break; 
 
\t \t case "wi_2": 
 
\t \t \t var oView = sap.ui.view({ 
 
\t \t \t \t viewName : "exercise2_ewallet.tabs.dashboard", 
 
\t \t \t \t type : sap.ui.core.mvc.ViewType.XML 
 
\t \t \t }); 
 
\t \t \t break; 
 
\t \t case "wi_3": 
 
\t \t \t var oView = sap.ui.view({ 
 
\t \t \t \t viewName : "exercise2_ewallet.tabs.wallet", 
 
\t \t \t \t type : sap.ui.core.mvc.ViewType.XML 
 
\t \t \t }); 
 
\t \t \t break; 
 
\t \t case "wi_4": 
 
\t \t \t var oView = sap.ui.view({ 
 
\t \t \t \t viewName : "exercise2_ewallet.tabs.admin", 
 
\t \t \t \t type : sap.ui.core.mvc.ViewType.XML 
 
\t \t \t }); 
 
\t \t \t break; \t 
 
\t \t default: 
 
\t \t \t var oView = new sap.ui.commons.TextView({ 
 
\t \t \t \t text : "View is not available" 
 
\t \t \t }) 
 
\t \t } 
 

 
\t \t oShell.setContent(oView); 
 
\t } \t

Regards, Roshan。

在此先感谢...我是sap ui5的新手,所以遇到这些基本问题。

回答

0

我没有用钩子方法,而不是说PFB的代码修改,这让我实现我的目标:

XML查看:

<ux3:Shell id="idMainShell" worksetItemSelected="handleTabSelect"> 

    <ux3:worksetItems> 
     <ux3:NavigationItem key="exercise2_ewallet.tabs.myprofile" text="My Profile"></ux3:NavigationItem> 
     <ux3:NavigationItem key="exercise2_ewallet.tabs.dashboard" text="Dashboard"></ux3:NavigationItem> 
     <ux3:NavigationItem key="exercise2_ewallet.tabs.wallet" text="Wallet"></ux3:NavigationItem> 
     <ux3:NavigationItem key="exercise2_ewallet.tabs.admin"  text="Admin"></ux3:NavigationItem> 
    </ux3:worksetItems> 
</ux3:Shell> 

Controller.JS

onInit: function() { 
 
\t \t this._workItems = {};} 
 

 
onAfterRendering: function() { 
 
\t \t this._workItems["exercise2_ewallet.tabs.myprofile"] = sap.ui.xmlview("exercise2_ewallet.tabs.myprofile"); 
 
\t \t this.byId("idMainShell").setContent(this._workItems["exercise2_ewallet.tabs.myprofile"]); 
 
\t },

我能够初始页面设置为我的配置文件,而使用壳牌这样,如果我们把它设置为onAfterRendering方法,当应用程序被上传得到。

Regards, Roshan。

0

问题是内容在初始化后是空的,因为只有当你点击一个NavigationItem时它才被填充。 您必须将第一个屏幕的内容分配到聚合ux3.shell。此聚合将在您的事件处理程序中被覆盖。

如果要以编程方式执行此操作,则可以在屏幕的第一次渲染过程中(例如从onInit钩子方法)手动调用事件处理程序handleTabSelect。在这种情况下,您必须手动构建Event对象。

将视图选择器逻辑移入事件处理程序handleTabSelect的单独函数是一个好主意;这个新功能接受一个参数sWSIKey;如果参数为空(在初始化短语中),则可以将默认屏幕设置为内容区域。