我需要从其他视图获取置于app.view
中标题上的切换按钮的状态。在app.view上,我有页眉和页脚。切换按钮位于标题上。按下按钮可以在 admin / user 之间切换用户角色。在其他视图上,我有一些按钮,这些按钮可以在按用户角色时打开外部URL。我也想在每个视图上切换角色。如何实现呢?
App.view.xml
<mvc:View
height="100%"
controllerName="sap.ui5.App"
xmlns:mvc="sap.ui.core.mvc"
xmlns:core="sap.ui.core"
xmlns:layout="sap.ui.layout"
xmlns:tnt="sap.tnt"
xmlns="sap.m"
xmlns:u="sap.ui.unified">
<Page
id="masterPage"
title=""
showHeader="false"
enableScrolling="false">
<tnt:ToolHeader>
<ToolbarSpacer />
<core:Icon src="sap-icon://tree" class="headerIcon" size="1.2rem"/>
<Text text="Title" wrapping="false" class="headerText">
<layoutData>
<OverflowToolbarLayoutData priority="Disappear" />
</layoutData>
</Text>
<ToolbarSpacer />
<Button icon="sap-icon://home" type="Transparent" press="onHomePress">
<layoutData>
<OverflowToolbarLayoutData priority="NeverOverflow" />
</layoutData>
</Button>
<ToggleButton id="btnRoleSwitch" icon="sap-icon://person-placeholder" enabled="true" pressed="false" press="onRoleSwitchPress" type="Transparent"/>
<Label text=""/>
</tnt:ToolHeader>
<App id="rootControl" class="adjustedHeight"/>
<footer>
<Toolbar>
<ToolbarSpacer/>
<Text text="Footer text" wrapping="false"></Text>
<ToolbarSpacer/>
</Toolbar>
</footer>
</Page>
</mvc:View>
<mvc:View
height="100%"
controllerName="sap.ui5.App"
xmlns:mvc="sap.ui.core.mvc"
xmlns:core="sap.ui.core"
xmlns:layout="sap.ui.layout"
xmlns:tnt="sap.tnt"
xmlns="sap.m"
xmlns:u="sap.ui.unified">
<Page
id="masterPage"
title=""
showHeader="false"
enableScrolling="false">
<tnt:ToolHeader>
<ToolbarSpacer />
<core:Icon src="sap-icon://tree" class="headerIcon" size="1.2rem"/>
<Text text="Title" wrapping="false" class="headerText">
<layoutData>
<OverflowToolbarLayoutData priority="Disappear" />
</layoutData>
</Text>
<ToolbarSpacer />
<Button icon="sap-icon://home" type="Transparent" press="onHomePress">
<layoutData>
<OverflowToolbarLayoutData priority="NeverOverflow" />
</layoutData>
</Button>
<ToggleButton id="btnRoleSwitch" icon="sap-icon://person-placeholder" enabled="true" pressed="false" press="onRoleSwitchPress" type="Transparent"/>
<Label text=""/>
</tnt:ToolHeader>
<App id="rootControl" class="adjustedHeight"/>
<footer>
<Toolbar>
<ToolbarSpacer/>
<Text text="Footer text" wrapping="false"></Text>
<ToolbarSpacer/>
</Toolbar>
</footer>
</Page>
</mvc:View>
App.controller.js
return BaseController.extend("sap.ui5.App", {
onInit : function () {
},
onDisplayNotFound: function(oEvent) {
// display the "notFound" target without changing the hash
this.getRouter().getTargets().display("notFound", {
fromTarget: "home"
});
},
onHomePress : function(oEvent) {
this.getOwnerComponent().getRouter().navTo("home");
},
onRoleSwitchPress : function (oEvent) {
var modeInfoMessage;
var oBtnRoleSwitch = this.byId("btnRoleSwitch");
var btnState = oBtnRoleSwitch.getPressed();
var sRole = "";
if (btnState == true) {
sRole = "Admin";
}
else if (btnState == false) {
sRole = "User";
}
MessageToast.show(sRole);
}
});
}, true);
View1.controller.js
return BaseController.extend("sap.ui5.View1", {
onInit: function() {
},
onSelectionChange: function(oEvent) {
var oTileUrl = "";
var oTileFunction = "";
var parentTitle = "";
//----> check state of toggle button on app.view <-------------
if (userRole != "") {
if (userRole == "admin") {
oTileUrl = oEvent.getSource().getBindingContext().getProperty("adminUrl");
}
else if (userRole == "user") {
oTileUrl = oEvent.getSource().getBindingContext().getProperty("userUrl");
}
}
window.open(oTileUrl, "_blank");
}
});
});
预先感谢
答案 0 :(得分:0)
有多种方法可以实现您要完成的任务,但是我建议反对两者:
以下是一些链接,可获取您所需的所有信息:
我为什么要反对两个建议
通过浏览器的命令行,可以轻松地 操作它们两者!
任何人都可以查看您的控制器,查找您的型号名称或获取用于管理员的参数。
唯一可以执行此操作的方案是,一旦用户点击了这些管理员视图/页面,便创建了某种安全机制。
对于那些机械师,我不的意思是:
if (userRole != "")
在浏览器控制台中也可以很容易地对其进行操作。
================================================ =========
快速浏览模型(我偏爱的方式),如果您不愿意在树液站点上阅读
App.view.xml:
<ToggleButton id="btnRoleSwitch"
icon="sap-icon://person-placeholder"
enabled="true"
pressed="{urModel/>isPressed}"
press="onRoleSwitchPress"
type="Transparent"/>
component.js的onInit:
var oUrModel= new JSONModel({
isPressed : null,
.
.
.
});
this.setModel(oUrModel, "urModel");
view1控制器:
this.getView().getModel("urModel").getProperty("/isPressed")