我使用统一的Shell控件来实现类似facebook的滑动菜单,并在其中集成了一个列表,以便我可以输入菜单项。这个想法是,当用户点击菜单中的某个列表项时,他将被重定向到新视图。我尝试使用bus.publish(" nav","到" {id:..})来实现它,但它无法正常工作。 (我把菜单放在统一外壳的Curtain窗格中)有人可以帮帮我吗? 您可以在下面找到视图和控制器的相应代码段。
var oListTemplate = new sap.m.StandardListItem({
title: "{title}",
icon: "{icon}",
description: "{description}",
type: sap.m.ListType.Navigation,
customData: new sap.ui.core.CustomData({
key: "targetPage",
value: "{targetPage}"
})
});
var oList = new sap.m.List({
selectionChange: [oController.doNavOnSelect, oController],
mode: sap.m.ListMode.SingleSelectMaster
});
oList.bindAggregation("items", "/Menu", oListTemplate);
控制器:
onInit: function() {
this.getView().setModel(new sap.ui.model.json.JSONModel("model/menu.json"));
this.bus = sap.ui.getCore().getEventBus();
},
doNavOnSelect: function(event){
if (sap.ui.Device.system.phone) {
event.getParameter("listItem").setSelected(false);
}
this.bus.publish("nav", "to", {
id: event.getParameter('listItem').getCustomData()[0].getValue()
});
答案 0 :(得分:1)
通过sap.ui.core.EventBus导航已过时。 请查看SAPUI5导航和路由http://help.sap.com/saphelp_hanaplatform/helpdata/en/68/8f36bd758e4ce2b4e682eef4dc794e/content.htm
在版本1.16中向UI5引入了一种新的路由机制。对于应用内导航,这取代了以前的技术,例如使用sap.ui.core.EventBus或在聚合页面之间共享特定于导航容器的控制器代码。
答案 1 :(得分:0)
解决方案:将bus.publish替换为app.to
doNavOnSelect: function(event){
if (sap.ui.Device.system.phone) {
event.getParameter("listItem").setSelected(false);
}
app.to(event.getParameter('listItem').getCustomData()[0].getValue());
}