sap.ui.ux3.Shell不显示初始视图

时间:2016-07-07 11:29:51

标签: sapui5

使用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);
	}	

此致 罗斯汉。

提前致谢...我是新手,因此遇到了这些基本问题。

2 个答案:

答案 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

&#13;
&#13;
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;
&#13;
&#13;

这样,如果我们将它设置为onAfterRendering方法,我可以在使用Shell时将初始页面设置为myProfile,当应用程序上传时。

此致 罗斯汉。