使用sap.ui.ux3.Shell时,我无法获取初始视图,但导航到其他视图并返回显示初始视图。 请帮我设置初始视图作为应用程序的默认/上传我的第一个视图(myprofile)应该上传。
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) {
var sWSIKey = oEvent.mParameters.key;
var oShell = oEvent.oSource;
switch (sWSIKey) {
case "wi_1":
// prompt("Username :");
// prompt("Password :");
var oView = sap.ui.view({
viewName : "exercise2_ewallet.tabs.myprofile",
type : sap.ui.core.mvc.ViewType.XML
});
break;
case "wi_2":
var oView = sap.ui.view({
viewName : "exercise2_ewallet.tabs.dashboard",
type : sap.ui.core.mvc.ViewType.XML
});
break;
case "wi_3":
var oView = sap.ui.view({
viewName : "exercise2_ewallet.tabs.wallet",
type : sap.ui.core.mvc.ViewType.XML
});
break;
case "wi_4":
var oView = sap.ui.view({
viewName : "exercise2_ewallet.tabs.admin",
type : sap.ui.core.mvc.ViewType.XML
});
break;
default:
var oView = new sap.ui.commons.TextView({
text : "View is not available"
})
}
oShell.setContent(oView);
}
此致 罗斯汉。
提前致谢...我是新手,因此遇到了这些基本问题。
答案 0 :(得分:0)
问题是初始化后内容为空,因为只有当你点击NavigationItem
时它才会被填充。
您必须将第一个屏幕的内容分配到content
的{{1}}聚合。此聚合将在您的事件处理程序中被覆盖。
如果要以编程方式执行此操作,可以在第一次呈现屏幕时手动调用事件处理程序ux3.shell
(例如,从handleTabSelect
挂钩方法)。在这种情况下,您必须手动构造Event对象。
最好将视图选择器逻辑移动到与事件处理程序onInit
不同的函数中;这个新函数接受一个参数handleTabSelect
;如果参数为空(在初始化短语中),则可以将默认屏幕设置为内容区域。
答案 1 :(得分: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() {
this._workItems = {};}
onAfterRendering: function() {
this._workItems["exercise2_ewallet.tabs.myprofile"] = sap.ui.xmlview("exercise2_ewallet.tabs.myprofile");
this.byId("idMainShell").setContent(this._workItems["exercise2_ewallet.tabs.myprofile"]);
},
&#13;
这样,如果我们将它设置为onAfterRendering方法,我可以在使用Shell时将初始页面设置为myProfile,当应用程序上传时。
此致 罗斯汉。